Google Script Timestamps onChange?

时间:2017-09-06 22:45:38

标签: google-apps-script google-sheets

我正在使用脚本将值从Column C复制到Next Blank Column - 但是,我想使用单独的时间戳脚本在{中添加日期MM yyyy)正在更改同一列的{1}} [见Sample Data]

(例如,第一次我的'复制值'函数运行时,它会将Row 1中的值复制到C2:C16 ...我想自动放置一个格式为D2:D16的格式为MM yyyy的时间戳 - 然后,下个月,它会将D1复制到C2:C16,并且我希望将E2:E16放入MM yyyy,等等。)

下面的脚本在编辑时会在单元格上方加时间戳,但在运行其他脚本时无法为时间戳记。

E1

我尝试将其更改为function onEdit() { var s = SpreadsheetApp.getActiveSheet(); if( s.getName() == "Sheet1" ) { //checks that we're on the correct sheet var r = s.getActiveCell(); if( r.getColumn() >= 4 && r.getColumn() <= 20) { //checks the column var nextCell = r.offset(-1, 0); nextCell.setValue(new Date()); } } } 功能,但没有成功。

任何帮助都是def。理解!

TY!

这是上面提到的onChange函数:

Copy Values

1 个答案:

答案 0 :(得分:1)

运行onEdit()时未调用readSalesNum()函数,因为onEdit()触发器仅在 用户 所做的修改时运行。来自documentation

  

<强> onEdit()

     

当用户更改值时,onEdit()触发器会自动运行   电子表格中的任何单元格。

更好的选择是将时间戳放入自己的函数中,您可以在readSalesNum()结束时调用它以及触发器。或者您可以在readSalesNum()末尾添加时间戳。另外,为什么不使用Utilities.formatDate()docs)来创建预先格式化的时间戳,因为您似乎依赖于时间戳格式的单元格格式?

e.g。 (只是添加一个时间戳)

function readSalesNum(){
  ... your code ...
  sheetTo.getRange(1,sheetTo.getLastColumn()+1).setValue(Utilities.formatDate(new Date(), "your_timezone", "MM yyyy")); 
}