【问题标题】:Google Sheets script to insert a timestamp on a row inserted from a form用于在从表单插入的行上插入时间戳的 Google 表格脚本
【发布时间】:2020-12-29 12:24:14
【问题描述】:

我完全不擅长为 Google 表格编写脚本。

我正在尝试编写一个脚本,该脚本将在从表单(不是谷歌表单)插入到谷歌工作表的行(第 23 列)上插入时间戳;它是其他一些供应商将数据发送到工作表和不传递时间戳)。

我一直在尝试从示例中编写一些脚本,但我似乎无法让它工作。我目前的脚本如下:

function setUpTrigger() {
  ScriptApp.newTrigger('timestamp')
  .forSpreadsheet('spreadsheet_id_goes_here')
  .onChange()
  .create();
}

function timestamp(e){

  if (e.changeType == 'INSERT_ROW'){
    SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(e.range.getRow(), 23).setValue(new Date());
  } 
}

非常感谢任何帮助

【问题讨论】:

  • 问题是您的脚本正在使用e.range,但更改事件对象不包含range 属性。
  • @Rubén 谢谢。我对此非常陌生,以至于我仍然不确定如何纠正这个问题。如何在事件对象中包含范围属性?
  • 你已经阅读了链接的问题吗?
  • @Rubén 这个问题没有说明任何关于“删除”事件的内容。我倾向于重新打开它。链接的问题表明这是不可能的,而这是可能的。虽然问题是e.range,正如您所建议的,但我认为它不能回答问题。

标签: google-apps-script google-sheets


【解决方案1】:

您会看到e.range.getRow() 方法。所以你检查行号是否有效。 否则,您已使用sh.getLastRow() 方法添加新记录。

function timestamp(e){
  if(e.changeType == 'INSERT_ROW'){
    var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var lastRow = sh.getLastRow()+1;
    sh.getRange(lastRow ,23).setValue(new Date);
 } 
}

【讨论】:

    【解决方案2】:

    问题:

    onChange 事件对象 e 不包含键 range。它不直接提供有关range 的信息。

    解决办法:

    onChange 的大多数情况下,特别是在您的情况下,更改类型为INSERT_ROWactiveRange 表示插入的当前行。

    function timestamp(e){
      if (e.changeType == 'INSERT_ROW'){
        const sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
        sh.getRange(sh.getActiveRange().getRow(), 23).setValue(new Date());
      } 
    }
    

    相关答案:

    【讨论】:

      【解决方案3】:

      根据onChange事件对象的documentatione可以包含以下信息:

      • authMode - 这是来自ScriptApp.AuthMode 枚举的值。;

      • changeType - 表示更改的类型(EDITINSERT_ROWINSERT_COLUMNREMOVE_ROWREMOVE_COLUMNINSERT_GRIDREMOVE_GRIDFORMAT 或 @987654 ).;

      • triggerUid - 这是产生此事件的触发器的 ID。;

      • user - 表示User 对象,如果可用,则表示活动用户。

      因此,为了插入所需的时间戳,您必须使用上述选项之一。

      参考

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-03
        • 1970-01-01
        • 1970-01-01
        • 2018-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多