将setValue与Google Scripts一起使用时出现问题

时间:2015-10-14 00:12:36

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

我是脚本新手,并且我正在尝试编写一个脚本,该脚本将在一列中查找值(" Scheduled"),然后如果找到则将当前日期写入另一列,并忽略是否已添加日期。

该脚本有效,但只能分配一个值(日期)。当我第二次运行它时,它将分配第二个值,等等。我今天早些时候工作了但是在我的生活中不能弄清楚我改变了什么。

此外,当我回到工作表时,我无法删除脚本添加的值。当我清理细胞时,几秒钟后日期总会自行恢复。有时将不同的值复制并粘贴到单元格中会删除脚本值,但并非总是如此。

这就是我所拥有的 - 我在想我忽略了一些非常明显的东西,但似乎无法找到它。

非常感谢!

function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[4];
var startRow = 2;
var numRows = sheet.getLastRow()-1;
var dataRange = sheet.getRange(startRow, 1, numRows, sheet.getLastColumn());
var data = dataRange.getValues();
//Logger.log(data)

for (var i = 0; i < data.length; ++i) {
var row = data[i];

var schedulingStatus = row[3];
var timeStamp = row[2];
var scheduled = "Scheduled";

  if(timeStamp === '') { 
    if(schedulingStatus == scheduled ) {
      return sheet.getRange(startRow + i, 3).setValue(new Date());
      SpreadsheetApp.flush();
    }
  }
}
}

1 个答案:

答案 0 :(得分:0)

正如Mogsdad所说,你有一个回报值。

删除它后返回值的原因是因为脚本有一个触发器onEdit。这意味着当您通过删除脚本运行的值来编辑工作表并再次复制该值时。您可以添加一个下拉菜单来运行该功能并更改名称,使其不会在电子表格的每次编辑时运行。

如果您还没有,可以在此处阅读有关触发器的更多信息https://developers.google.com/apps-script/guides/triggers/