【问题标题】:Google Sheet Script - onChange谷歌表格脚本 - onChange
【发布时间】:2020-06-01 17:34:51
【问题描述】:

请帮助 Google onChange 函数工作表脚本。 我只想为一张“出勤”登录更改,然后将此表上的更改登录到“Sheet5” 当“出勤”列 C 发生变化时,将 B 列的值复制到“Sheet5”中并添加当前日期和时间。这是我尝试的一些代码,但不知道如何更改它。

function createSpreadsheetOpenTrigger() {

   ScriptApp.newTrigger('onChange')
    .forSpreadsheet('ID to go here')
   .onChange()
   .create();

    }

function onChange(e) {

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet5");
  const lastRow = sheet.getLastRow();

  sheet.getRange(lastRow + 1,1,1,4).setValues([
    [e.changeType,
      e.source.getSheetName(),
      e.source.getActiveSheet().getActiveRange().getValue(),
     new Date()]
    ]);
   }

【问题讨论】:

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


【解决方案1】:

试试这个:

function onEdit(e) {
  const sh=e.range.getSheet();
  if(sh.getName()=='Attendance' && e.range.columnStart==3 && e.range.rowStart>'Your header row') {
    e.source.getSheetByName("Sheet5").appendRow([e.range.offset(0,-1).getValue(),new Date()]);
  }
}

onedit event obj

【讨论】:

  • 嗨库珀,您的回复。 onEdit 工作得很好,但我忽略了在我原来的问题中说明,为此道歉,我需要使用 onChange 函数,因为第 3 方访问工作表只能与 onChange 函数一起使用。我尝试将脚本从 onEdit 更改为 onChange 没有运气。
  • 尝试使用可安装触发器。
  • Thx Cooper,是的,我安装并测试了一个触发器“ScriptApp.newTrigger('onChange')”,它触发了 onChange 功能,但您建议的 onEdit 脚本似乎不适用于 onChange .
  • 不,当然不是,但我建议您尝试安装可安装的 onEdit 触发器。 on change 事件对象和 on edit 事件对象还是完全不同的。你应该去阅读文档中的事件对象,你会发现它们完全不同
  • 嗨 Cooper,经过大量阅读,可安装触发器现在可以工作,并且已更改的行已复制到“Sheet5”。我仍然有 1 个问题,我正在努力解决,似乎复制循环两次或有时 3 次。当我对“出勤”中的记录进行更改时,它会复制超过 1 个到“Sheet5” 这是当前代码
猜你喜欢
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
相关资源
最近更新 更多