【问题标题】:Problem with connecting Google app script to my google sheet将 Google 应用脚本连接到我的 Google 工作表时出现问题
【发布时间】:2021-12-04 11:26:26
【问题描述】:

每次我在第一列中输入时,我一直试图在我的谷歌表中获取时间戳,它应该在第四列中给我日期和时间戳。但是,我不知道我做错了什么所有的教程都是一年前的,谷歌已经从谷歌表格的“工具”菜单中删除了编辑脚本功能,所以我不知道如何正确连接该功能.

代码如下:

function onEdit(e) {
  var row = e.range.getRow();
  var col = e.range.getColoumn();

  if(col===1 && row>1 && e.source.getActiveSheet.getName()=== "Dummy1")  {
    e.source.getActiveSheet.getRange(row,4).setValue(new Date());
  }
}

这是它给我的错误:

TypeError:无法读取未定义的属性“范围” onEdit@TimeStamp.gs:3

以及工作表的链接:https://docs.google.com/spreadsheets/d/1lBe7GDT7-yAS3GiBhoiVppIZe7gDkI3ihExmo5ZaEy8/edit?usp=sharing

【问题讨论】:

    标签: javascript google-apps-script google-sheets timestamp dom-events


    【解决方案1】:

    你有一个错字。是getColumn() 而不是getColoumn()

    另外getActiveSheet是一个函数,所以需要括号getActiveSheet()

    function onEdit(e) {
      var row = e.range.getRow();
      var col = e.range.getColumn();
    
      if(col===1 && row>1 && e.source.getActiveSheet().getName()=== "Dummy1")  {
        e.source.getActiveSheet().getRange(row,4).setValue(new Date());
      }
    }
    

    【讨论】:

    • 错误仍然存​​在我将它修复为“getColumn()”,但它在它仍然是相同的错误之前给了我错误:TypeError: Cannot read property 'range' of undefined onEdit @TimeStamp.gs:3
    • 我再次将其编辑为:function onEdit(e) { var row = e.range.getRow(); var col = e.range.getColumn(); if(col===1 && row>1 && e.source.getActiveSheet().getName()=== "Dummy1") { e.source.getActiveSheet().getRange(row,4).setValue(new Date ()); } }
    • 但错误仍然存​​在:TypeError: Cannot read property 'range' of undefined onEdit @ TimeStamp.gs:2
    • 它工作正常。检查您的电子表格。也许你没有保存它。
    【解决方案2】:

    此解决方案更好地利用了事件对象,并且运行速度更快。

    function onEdit(e) {
      //e.source.toast('Entry');//these lines can be an aid to debugging 
      //Logger.log(JSON.stringify(e));//uncomment this to learn more about event object
      const sh = e.range.getSheet();
      if (e.range.columnStart == 1 && e.range.rowStart > 1 && sh.getName() == "Dummy1") {
        e.range.offset(0, 3).setValue(new Date());
      }
    }
    

    您不能从脚本编辑器运行这样的函数,因为它们需要 onedit 触发器中的事件对象,该触发器在您编辑电子表格上的单元格时生成。因此,要测试它们,您只需创建它们并将它们保存为函数 onEdit(e),然后编辑页面以查看它是否工作。您可以在不同的位置使用e.source.toast('flags') 来帮助您确定函数中存在的问题。

    【讨论】:

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