0

除了时间戳发生时它比我的实际时间晚 2 小时外,一切都适用于我的代码。我如何让它知道 CST 时区,还是 Google 表格中需要更改的内容?这是我第一次使用代码,我很惊讶我能走到这一步。

function onEdit(e) {
  var sh = e.source.getActiveSheet();
  var sheets = ['TK Assignments']; // Which sheets to run the code.

  // Columns with the data to be tracked. 1 = A, 2 = B...
  var ind = [15, 17, 19].indexOf(e.range.columnStart); 

  // Which columns to have the timestamp, related to the data cells.
  // Data in 1 (A) will have the timestamp in 4 (D)
  var stampCols = [16, 18, 20]

  if(sheets.indexOf(sh.getName()) == -1 || ind == -1) return;

  // Insert/Update the timestamp.
  var timestampCell = sh.getRange(e.range.rowStart, stampCols[ind]);
  timestampCell.setValue(typeof e.value == 'object' ? null : new Date());
4

1 回答 1

1

Apps 脚本文件和电子表格文件都有自己的时区设置。脚本和工作表文件中的默认时区设置是浏览器中的时区。在代码中创建日期时,默认情况下会使用脚本的时区而不是表格时区创建日期。

你可以:

1.修改脚本时区

  • 在脚本编辑器中,转到File>Project Properties. 在Info选项卡中,向下滚动到底部附近,然后根据需要选择“时区”设置。由于这些是“时区”(而不是偏移量),他们将考虑 DST。如果您愿意,您可以在此处阅读更多相关信息。

2.使用电子表格的设置时区

  • 电子表格也有一个时区设置Files>Spreadsheet Settings
  • 剧本内。你可以使用Utilities.formatDate( new Date(), Session.getScriptTimeZone() , "MM/dd/yy HH:mm"). 该getScriptTimeZone()函数将获取在 中找到的时区设置Files/Project properties
  • 如果由于某种原因,您更喜欢使用与脚本设置或工作表设置中设置的时区不同的时区,您可以在调用Utilities.formatDate(). 您可以在此处查看更多信息:https ://developers.google.com/apps-script/reference/utilities/utilities#formatdatedate,-timezone,-format
于 2019-10-24T07:53:03.123 回答