Google apps script 捕获日期和时间;编辑单元格的时间(谷歌电子表格)

Google apps script 捕获日期和时间;编辑单元格的时间(谷歌电子表格),google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在寻找一种方法来捕获更新/编辑单元格时的时间和日期(或仅日期) 我在网上搜索时发现了一些教程,但我想它有点过时了,没有100%运行。这是我找到的代码 function capdatetime(event) { var timezone = "GMT+8"; var timestamp_format = "MM-dd-yyyy"; //Timestamp format var updateColName = "Date Sent"; var sheet = SpreadsheetApp.get

我正在寻找一种方法来捕获更新/编辑单元格时的时间和日期(或仅日期)

我在网上搜索时发现了一些教程,但我想它有点过时了,没有100%运行。这是我找到的代码

function capdatetime(event)
{
var timezone = "GMT+8";
var timestamp_format = "MM-dd-yyyy"; //Timestamp format
var updateColName = "Date Sent";
var sheet = SpreadsheetApp.getActiveSpreadsheet(); //Name of the sheet where you want to run the script
var actRng = SpreadsheetApp.getActiveRange();
var editColumn = actRng.getColumn();
var index = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var dateCol = headers[0].indexOf(timeStampColName);
var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;
if (dateCol > -1 && index > 1 && editColumn == updateCol) { //only timestamp of 'Last Updated' header exists, but not in the header row itself!
var cell = sheet.getRange(index, dateCol + 1);
var date = Utilities.formatDate(new date(), timezone, timestamp_format);
cell.setValue(date);
}
}
我修改了它以解决我遇到的一些错误,但是有一个特别的错误我不能理解那么多

以下是错误:

有人能解释一下并帮我解决这个问题吗?谢谢,我还会继续寻找一些想法。

这个怎么样

function capdatetime(event)
{
  var timezone = "GMT+8";
  var timestamp_format = "MM-dd-yyyy"; //Timestamp format
  var updateColName = "Name";
  var timeStampColName = "LastUpdated";
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sample'); //Name of the sheet where you want to run the script
  var actRng = sheet.getActiveRange();
  var editColumn = actRng.getColumn();
  var index = actRng.getRowIndex();
  var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
  var dateCol = headers[0].indexOf(timeStampColName);
  var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;
  if (dateCol > -1 && index > 1 && editColumn == updateCol) { //only timestamp of 'Last Updated' header exists, but not in the header row itself!
    var cell = sheet.getRange(index, dateCol + 1);
    var date = Utilities.formatDate(new Date(), timezone, timestamp_format);
    cell.setValue(date);
  }
}

这样写:
var headers=sheet.getSheetByName(name).getRange(行、列、numRows、numColumns)
。Direct
sheet.getRange()
不支持4个参数。(这里的sheet只不过是
SpreadsheetApp.getActiveSpreadsheet()
)。感谢您的解释,按照您的建议做了,我不再遇到错误,但我想整个脚本都有问题,因为它仍然无法工作。原始脚本如下所示:“var sheet=event.source.getSheetByName('Sheet3'))'但是event.source出现错误,这就是我更改它的原因,无论如何,您的脚本没有显示任何错误,但我无法验证它,因为我认为整个脚本本身无法工作。我可以查看初始脚本吗?您可以检查电子表格中的脚本。