Hattori_Hanzo
@Hattori_Hanzo

Как заставить выполняться скрипт по строкам?

Здравствуйте! Начал прописывать скрипт, но столкнулся с такой проблемой, скрипт выполняется, но он вставляет значение на весь диапазон, каким образом сделать так, чтобы значение вставлялось не сразу на весь диапазон, а по мере заполнения (например А2 не пустая, значит в В2 вставляется значение, А3 не пустая, значит в В3 вставляется значение и так далее)?

function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
if (sheet.getRange("A2:A").isBlank()===false){
var cell = sheet.getRange("B2:B");
cell.setValue("Выполнена");
}
}
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
ProgrammerForever
@ProgrammerForever Куратор тега Google Apps Script
Учитель, автоэлектрик, программист, музыкант
Не пойму, зачем это делать скриптом, если можно одной формулой, записав в B1:
=ARRAYFORMULA(ЕСЛИ(A1:A="";"";"Выполнено"))

Если нужно менять B столбец при изменении A, и вставлять туда "Выполнено" при непустом значении в А, то это как-то так:
/**
 * Возникает при изменении ячейки
* @param {e} event event-объект https://developers.google.com/apps-script/guides/triggers/events?hl=ru
 * [ ProgrammerForever (c) 2020 ]
 * @return Не возвращает значений
 */
function onEdit(event) {
  var ss = event.source.getActiveSheet();//Текущий лист
  var address = event.range.getA1Notation().toUpperCase();//Адрес ячейки
  var row = event.range.getRow();      //Номер строки
  var col = event.range.getColumn();  //Номер столбца
  var newValue = event.value;            //Новое значение
  var oldValue = event.oldValue;        //Старое значение
  var userEmail = event.user.getEmail();//Пользователь(работает только при вручную назначенном триггере)
  
  //Делаем что-то
  if((col===1)&&(newValue!="")){
    ss.getRange(row,2).setValue("Выполнено");
  };
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы