【问题标题】:Error only appears when running script in Apps Script Editor仅在 Apps 脚本编辑器中运行脚本时出现错误
【发布时间】:2019-04-09 20:15:04
【问题描述】:

我正在尝试运行一个脚本,该脚本在具有多张工作表的电子表格的 E 列中输入或更改数据时自动填充 F 列中的日期。

我目前有一个根据我描述的内容为我编写的脚本,但我收到了错误代码。我回到我最初的问题并解释说,这个脚本需要在具有多个工作表的电子表格中的一个工作表上运行。他给了我一些额外的信息,但这是他的最后一个答案“是的,你需要用“getsheetbyname”之类的东西替换event.source.getActiveSheet()。我已经尝试了我有限知识范围内的一切来处理他给我的东西,但我是无论我尝试什么,仍然收到错误代码。

这是给我错误的区域。

var sheet = event.source.getsheetbyname();

这是我收到的错误代码

TypeError:无法从未定义中读取属性“源”。 (第 2 行,文件“代码”)

我知道需要有我希望脚本在其上运行的工作表的名称,但我不知道如何对其进行编码。片名是“少年权重”

预期结果应该是当我在 E 列中添加或更改数据时,它应该将当前日期自动填充到相邻列中的相邻单元格中。

当我保存脚本然后运行脚本以确保它正常工作时,当然,它给了我上面描述的错误代码。然后,当我在保存脚本而不是自动填充日期后返回该工作表时,现在当我连续突出显示一串单元格时,它将所有以下单元格更改为与我开始突出显示的第一个单元格中的相同信息.很奇怪!

脚本+错误码:

代码:

function onEdit(event) { 
  var sheet = event.source.getActiveSheet();

  // note: actRng = the cell being updated
  var actRng = event.source.getActiveRange();
  var index = actRng.getRowIndex();
  var cindex = actRng.getColumnIndex();

  if (cindex == 5) { // 1 == Column A, 2 == Column B, 3 == Column C, etc.
   var dateCol = sheet.getLastColumn();  
   var lastCell = sheet.getRange(index,dateCol);
   var date = Utilities.formatDate(new Date(), "EST", "MMM-dd-yyyy");
   lastCell.setValue("'" + date);
  }
}

【问题讨论】:

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


【解决方案1】:

我相信这会做同样的事情:

function onEdit(e) { 
  var sheet = e.range.getSheet();
  if (e.range.columnStart == 5) {
    sheet.getRange(e.range.rowStart,sheet.getLastColumn()).setValue("'" + Utilities.formatDate(new Date(), "EST", "MMM-dd-yyyy HH:mm:ss"));
  }
}

【讨论】:

  • 这就是问题所在。他给了我一个脚本,它本身就适用于一张纸。我想在具有多张工作表的电子表格中使用它,我无法复制该脚本并将其从原始工作表转移到我想要使用它的工作表上。单独使用它可以正常工作,但是将它与我​​需要它一起使用的工作表一起使用,它绝对没有任何作用。这就是为什么我仍然在这里寻求帮助的原因。
  • 如果您在“代码:”下的答案中谈论脚本,它将适用于所有工作表,并且它的作用与我的相同,只是我喜欢利用尽可能在事件块中保存数据以节省时间,因为这段代码必须在 30 秒内运行。
  • 请记住,此代码仅在用户对 E 列中的内容进行物理编辑时运行
【解决方案2】:

你不使用SpreadsheetApp.getActiveSheet().getSheetByName("Juvenile weights");有什么原因

【讨论】:

  • 它仍然给我一个错误代码TypeError: Cannot find function getSheetByName in object Sheet. (line 2, file "Code")
  • 你是如何运行它的?您运行的代码是否与您的问题中的代码相同?
  • 我用@J 的代码试过了。 G.给了我```SpreadsheetApp.getActiveSheet().getSheetByName("Juvenile weights");
  • 只是想让你知道我能够让它工作@Cooper所以感谢你在这方面的所有帮助。
  • 请勾选其中一个答案。您的选择。
猜你喜欢
  • 2018-01-06
  • 2021-03-17
  • 2019-08-23
  • 2020-08-02
  • 1970-01-01
  • 1970-01-01
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多