【问题标题】:Time driven trigger, but having trouble referencing the sheet时间驱动触发器,但在引用工作表时遇到问题
【发布时间】:2019-04-23 22:57:26
【问题描述】:

如果该行在当天的某个时间点被编辑,则尝试创建触发器以向列添加时间戳。为了工作,他们觉得 onEdit 太乱了。我也不知道。

所以,我设置了一个触发器,每天下午 1 点运行。那部分有效。但是,我不知道如何使时间戳的代码指向该触发事件,也不知道如何写出该特定函数。这就是我所拥有的,它到达第 10 行并说源被定义为空。我是在寻找它需要的 triggerUiD 还是其他什么?

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);
  }
}

【问题讨论】:

    标签: google-apps-script google-sheets timestamp crontrigger


    【解决方案1】:

    第 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);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多