Я написал этот, казалось бы, простой скрипт для копирования цветов фона из одного столбца в другой.
Когда я запускаю скрипт, я не получаю сообщений об ошибках, но, похоже, ничего не происходит.
Вот что я ввожу в ячейку на листе:
=copyColor("B:B", "A:A")
Я прочитал сообщение на форуме Google Apps Script, в котором говорилось, что этот тип процедуры невозможен, но я полон решимости написать сценарий, который его реализует.
Вот что в сообщении говорилось:
«Как ясно объясняется в документации, пользовательские функции возвращают значения, но они не могут устанавливать значения за пределами ячеек, в которых они находятся. В большинстве случаев пользовательская функция в ячейке A1 не может изменять ячейку A5. Это, конечно, верно и для других такие методы, как setBackground и т. д.».
Вот почему я попытался обойти проблему, НЕ ИСПОЛЬЗУЯ функцию setBackgrounds()
.
Есть ли другой способ? Или есть способ исправить мою, чтобы она работала?
function copyColor(rangeToCopy, rangeToPaste)
{
//an array to store the first background colors
var firstColors = [];
//an array to store the second background colors
var secondColors = [];
//this will assign the first range into a variable
var firstRange = SpreadsheetApp.getActiveSheet().getRange(rangeToCopy);
//this will store the colors of the range into the firstColors array
firstColors = firstRange.getBackgrounds();
//this will assign the second range to a variable
var secondRange = SpreadsheetApp.getActiveSheet().getRange(rangeToPaste);
//this will store the colors of the range into the secondColors array
secondColors = secondRange.getBackgrounds();
//compare the two color arrays. if they do not match, apply the first array to the second array
if (firstColors != secondColors)
{
secondColors = firstColors
}
}
secondColors = secondRange.getBackgrounds()
устанавливаетsecondColors
равным тому, что находится в rvalue. ЗатемsecondColors = firstColors
устанавливаетsecondColors
= вfirstColors
. Он не обновляет то, чему изначально было равно значение secondColors. - person tehhowch   schedule 21.03.2018