将onEdit脚本转换为手动运行的脚本

时间:2019-06-05 09:47:07

标签: google-apps-script google-sheets triggers

该脚本的目的是在第4列中的单元格具有文本Assign的时刻将datetimestamp写入特定的单元格。

我有一个理论上可行的脚本,但是我从App Sheet中获取数据。问题在于,App Sheet将数据写入到我的表格中,但脚本不会将其视为已编辑的单元格,因此不会写入时间戳。

但是我对应用程序脚本的了解很差。而且我在源代码行和col,val行中遇到了错误。

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 hhmmss');

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

  }
}

我想将我的脚本转换为手动运行的脚本,且触发时间为1分钟。这样,我希望脚本将看到更改为Assign的单元格。

1 个答案:

答案 0 :(得分:0)

问题根源于应用程序脚本触发器restrictions,特别是由于它们无法监听基于脚本的事件。我建议您使用doGet() / doPost()函数将脚本部署为WebApp来侦听API请求,如果我正确地假设AppSheet与Zapier类似,则添加一个调用对Spreadsheet进行更改后,您的WebApp。

请参阅WebApp上的this guide,其用法非常简单。

P.s。顺便说一句,不要创建用作事件侦听器的触发器,您将轻松cap your quotas