Google apps script 谷歌脚本时间戳的变化?

Google apps script 谷歌脚本时间戳的变化?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我使用一个脚本将值从列C复制到下一个空白列-但是,我想使用一个单独的时间戳脚本将日期MM yyyy添加到正在更改的同一列的第1行中。[见] 例如,第一次运行“复制值”函数时,它会将C2:C16中的值复制到D2:D16。。。然后,我想在单元格D1中自动放置格式为MM yyyy的时间戳-然后,下个月,它将C2:C16复制到E2:E16,我想在E1中放置MM YY,依此类推 当我编辑单元格时,下面的脚本将在单元格上方添加时间戳,但当我运行另一个脚本时,它将无法添加时间戳 function onEdit

我使用一个脚本将值从列C复制到下一个空白列-但是,我想使用一个单独的时间戳脚本将日期MM yyyy添加到正在更改的同一列的第1行中。[见]

例如,第一次运行“复制值”函数时,它会将C2:C16中的值复制到D2:D16。。。然后,我想在单元格D1中自动放置格式为MM yyyy的时间戳-然后,下个月,它将C2:C16复制到E2:E16,我想在E1中放置MM YY,依此类推

当我编辑单元格时,下面的脚本将在单元格上方添加时间戳,但当我运行另一个脚本时,它将无法添加时间戳

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());
      }
      }
    }
运行readSalesNum时不会调用onEdit函数,因为onEdit触发器仅在用户进行编辑时运行。从:

奥尼特

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

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

e、 只需添加一个时间戳

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

您能否提供有关如何调用copyValues函数以及它如何调用此onEdit函数的更多信息?我怀疑问题是r超出了范围。在上面添加copyValues函数这是我的想法,但可以用手来实现。这个例子会很有帮助。就是这个!谢谢你,迪恩!
function readSalesNum(){
  ... your code ...
  sheetTo.getRange(1,sheetTo.getLastColumn()+1).setValue(Utilities.formatDate(new Date(), "your_timezone", "MM yyyy")); 
}