Установить дату, когда ячейка имеет определенный текст - PullRequest
0 голосов
/ 04 июня 2019

У меня есть скрипт, который будет записывать дату и время в столбец 14, когда ячейка в столбце 4 имеет текст «Назначить». Проблема, с которой я сейчас сталкиваюсь, заключается в том, что столбец 14 не изменится, если я не добавлю непосредственно «Назначить» в столбец 4.

Например: я указываю ячейку 4 в столбце электронных таблиц 4 = I4, и у меня есть текст «Назначить» в I4, в столбце 14 не отображается текущая дата и время.

В тот момент, когда я вручную сделаю в столбце 4 ячейку 4 «Назначить», в столбце 14 будет отображаться время даты.

Скрипт работает на редакторе, может в этом проблема? Я новичок в скрипте Google Apps.

function onEdit(e) {
  var sh =  e.source.getActiveSheet();
  var col = e.range.getColumn();
  var val = e.range.getValue();

  //check if sheet is 'Blad1', column edited is 'C' & value is 'assign'
  if (sh.getSheetName() === 'Blad1' && col === 4 && val === 'Assign') {
    var row = e.range.getRow();
    var tz = e.source.getSpreadsheetTimeZone();
    var date = Utilities.formatDate(new Date(), tz, 'dd-MM-yyyy     hh:mm:ss');

    //set date in column 14 for same row
    sh.getRange(row, 14).setValue(date);

  }
}

Сценарий работает только тогда, когда я непосредственно помещаю текст в столбец 4. Я хочу, чтобы сценарий работал всякий раз, когда ячейка в столбце 4 изменяется на «Назначить».

P.S. Spreadsheet получит новые данные из программы, которая называется app sheet. Когда лист приложения меняет столбец 4 на «Назначить», мне нужно показать текущее время.

1 Ответ

0 голосов
/ 04 июня 2019

Этот сценарий будет выполнять setValue() только если обновляется столбец 4, это одна из вещей, которые оператор if проверяет специально:

if (sh.getSheetName() === 'Blad1' && col === 4 && val === 'Assign') {

Если вы хотите, чтобы он запускался каждый раз, когдалист редактируется и val === 'Assign', все, что вам нужно сделать, это удалить проверку столбца из оператора if и определить val, используя getRange() вместо объекта события e.range.

function onEdit(e) {
  var sh = e.source.getActiveSheet();
  var row = e.range.getRow();
  var col = e.range.getColumn();
  var val = sh.getRange(row, 4).getValue();

  //check if sheet is 'Blad1' & value is 'Assign'
  if (sh.getSheetName() === 'Blad1' && val === 'Assign') {
    var tz = e.source.getSpreadsheetTimeZone();
    var date = Utilities.formatDate(new Date(), tz, 'dd-MM-yyyy     hh:mm:ss');

    //set date in column 14 for same row
    sh.getRange(row, 14).setValue(date);
  }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...