仅在Apps脚本编辑器中运行脚本时出现错误

时间:2019-04-09 20:15:04

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

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

我目前有一个脚本,该脚本是根据我的描述为我编写的,但出现错误代码。我回到最初的问题,并解释说,此脚本需要在具有多个工作表的电子表格中的单个工作表上运行。他给了我一些额外的信息,但这是他的最后一个回答:“是的,您需要将event.source.getActiveSheet()替换为“ getsheetbyname”之类的东西。我已经尽我所能尝试了所有与他给我的东西一起工作的知识,但是无论我如何尝试,我仍然会收到错误代码。

这是给我错误的区域。

var sheet = event.source.getsheetbyname();

这是我收到的错误代码

  

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

我知道必须要有要运行脚本的工作表的名称,但是我不知道如何编写代码。工作表的名称是“少年体重”

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

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

脚本+错误代码:

enter image description here

代码:

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);
  }
}

2 个答案:

答案 0 :(得分:0)

您有没有使用SpreadsheetApp.getActiveSheet().getSheetByName("Juvenile weights");

的原因吗?

答案 1 :(得分:0)

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

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"));
  }
}