Я пытаюсь адаптировать пример сценария от this предыдущий, родственный вопрос. Для строк, где значение ячейки в столбце K равно нулю, я хочу сделать строку желтой.Формат строки цвета на основе значения ячейки
Вот мой текущий адаптированный код:
function colorAll() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 3;
var endRow = sheet.getLastRow();
for (var r = startRow; r <= endRow; r++) {
colorRow(r);
}
}
function colorRow(r){
var sheet = SpreadsheetApp.getActiveSheet();
var c = sheet.getLastColumn();
var dataRange = sheet.getRange(r, 1, 1, c);
var data = dataRange.getValue();
var row = data[0];
if(row[0] === "0"){
dataRange.setBackground("white");
}else{
dataRange.setBackground("yellow");
}
SpreadsheetApp.flush();
}
function onEdit(event)
{
var r = event.source.getActiveRange().getRowIndex();
if (r >= 3) {
colorRow(r);
}
}
function onOpen(){
colorAll();
}
Моя проблема, я не могу понять, как ссылаться на столбец К. В связанном ответ выше, претензии создателя сценария, "[ч] Пример сценария Google Apps Script для изменения цвета фона всей строки на основе значения в столбце A. «Во-первых, и самое главное, я не могу понять, где он ссылается на столбец А. Я думал, что нужно изменить« var dataRange » = sheet.getRange (r, 1, 1, c); to "var dataRange = sheet.getRange (r, , 1, c);" сделало бы это, но это только добавило 10 пустых столбцов в конец моего листа, а затем скрипт разбился. Я не понимаю, почему.
Во-вторых, однако, его утверждение о том, что сценарий затрагивает целые строки, является неточным, поскольку его исходный «var dataRange = sheet.getRange (r, 1, 1, 3);» только цветные первые три столбца - вот почему я добавил «var c» и изменил «3» на «c».
Кроме того, когда я играю/отлаживать сценарий, или запустить «onEdit» от менеджера таблицы сценария, я получаю «TypeError: Не удается прочитать свойство„источник“из неопределенного.» Я вижу, что «источник» не определен - я ошибочно предположил, что это был метод сначала, но я не уверен, как исправить эту проблему.
И, наконец, столбец K не всегда будет ссылочным столбцом, поскольку я хочу добавить больше столбцов слева от него. Я предполагаю, что мне придется обновлять скрипт каждый раз, когда я добавляю столбцы, но заголовок столбца в строке 2 не изменится, поэтому, если кто-то может помочь мне разработать немного кода, который будет искать определенную строку в строке 2, то получите эту ссылку столбца для использования в функции colorRow(), я был бы признателен.
Я не могу определить, действительно ли этот сценарий структурирован, но в идеале я хочу, чтобы моя таблица была реактивной - я не хочу повторять этот сценарий после редактирования управляющей ячейки или при ее открытии; он читается так, как будто он должен это делать (если он не глючит), но это моя первая попытка использовать скрипт Google Apps, и я ничего не чувствую.
Я не очень разбираюсь в написании сценариев, но в 2006 году я изучил основы программирования/класс Python в школе градиента и провел 4 года работы с Excel & Доступ вскоре после этого, часто создавая и адаптируя макросы. Я не могу создать дизайн с нуля, но я понимаю основные принципы и концепции, даже если я не могу перевести все (например, я не понимаю, что означает «++» в третьем аргументе в «for», заявление я использую: «для (вара г = StartRow; г < = EndRow; г ++).» Я думаю, что я иносказательно эквивалентен грамотный испанского языка пытается читать итальянские
Помощь и познавательны. объяснения/примеры, будем очень благодарны.Спасибо за чтение/skimming/пропущенное к этому предложению.
Это почти сработало. Правильные строки меняются на желтый, но только из столбца K, а скрипт все еще создает дополнительные 10 столбцов в правом конце листа. Спасибо за улучшения, надеюсь, я скоро смогу это решить ... У меня есть некоторые идеи/догадки о том, почему это происходит. Но, может быть, вы точно знаете? – Thucydides16
См. Отредактированный код. Он окрашивает всю строку. Вам просто нужно изменить выбранный вами диапазон. – Srik
Я вижу, что вы редактировали, и я подумал, что изменения будут исправлены, но я получаю эту ошибку: «TypeError: Невозможно вызывать метод« toString »неопределенного.» Нужно ли нам определять другой var для установки данных [0] [11], а затем поставить var перед .toString()? Хм ... Я очень ценю всю вашу помощь. – Thucydides16