Триггер, управляемый временем, но с трудностями при ссылке - PullRequest
0 голосов
/ 24 апреля 2019

Попытка создать триггер для добавления метки времени к столбцу, если эта строка была отредактирована в какой-то момент в тот день. Это для работы, они чувствуют, что onEdit слишком грязный. Я тоже не знаю.

Итак, у меня есть триггер, который запускается в 13:00 каждый день. Эта часть работает. Тем не менее, я не знаю, как сделать код для метки времени, указывающий на это инициированное событие, и я не знаю, как написать эту конкретную функцию. Это то, что у меня есть, оно попадает в десятую строку и говорит, что источник определен как ноль. Я ищу триггер, который ему нужен, или что-то еще?

function myFunction(event) {
  var timeZone = Session.getScriptTimeZone();
  var timestamp_format = "MM-dd-yyy hh:mm:ss";
  var updateColName = "Updated";
  var timeStampColName = "Timestamp";
  var source = SpreadsheetApp.getActive().getSheetByName("TestTimestamp");
  var actRng = SpreadsheetApp.getActive().getActiveRange();
  var editColumn = actRng.getColumn();
  var index = actRng.getRowIndex();
  var headers = SpreadsheetApp.getActive().getSheetByName("TestTimestamp").getRange(1, 1, 1, sheet.getLastColumn()).getValues();
  var dateCol = headers[0].indexOf(timeStampColName);
  var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;
  if (dateCol > -1 && index > 1 && editColumn == updateCol) {
      var cell = sheet.getRange(index, dateCol +1);
      var date = Utilities.formateDate(new Date(), timezone, timestamp_format);
      cell.setValue(date);
  }
}

1 Ответ

0 голосов
/ 24 апреля 2019

Лист строки 10 не определен в var headers = SpreadsheetApp.getActive().getSheetByName("TestTimestamp").getRange(1, 1, 1, sheet.getLastColumn()).getValues();

Вы можете переписать его так:

function myFunction(event) {
  var ss=SpreadsheetApp.getActive();
  var timeZone = Session.getScriptTimeZone();
  var timestamp_format = "MM-dd-yyy hh:mm:ss";
  var updateColName = "Updated";
  var timeStampColName = "Timestamp";
  var source = ss.getSheetByName("TestTimestamp");
  var actRng = ss.getActiveRange();
  var editColumn = actRng.getColumn();
  var index = actRng.getRowIndex();
  var sheet=ss.getSheetByName('TestTimestamp'');
  var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
  var dateCol = headers.indexOf(timeStampColName);
  var updateCol = headers.indexOf(updateColName); updateCol = updateCol+1;
  if (dateCol > -1 && index > 1 && editColumn == updateCol) {
    var cell = sheet.getRange(index, dateCol +1);
    var date = Utilities.formateDate(new Date(), timezone, timestamp_format);
    cell.setValue(date);
  }
}
...