如何在Google电子表格中自动添加时间戳

Nix*_*lle 5 timestamp google-sheets google-apps-script

我的Google电子表格中有一张包含5个单元格的工作表,前3个仅包含单词,而最后2个包含时间,特别是时间戳.

cell 1 = data
cell 2 = data
cell 3 = data
cell 4 = time start
cell 5 = time ended
Run Code Online (Sandbox Code Playgroud)

现在,我想要的是当向单元1提供数据时,时间戳将自动出现在单元格4中.当向单元2和单元3提供数据时,时间戳将是单元5的新值.

我的朋友给了我一个代码,应该粘贴在脚本编辑器中:

function readRows() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();

for (var i = 0; i <= numRows - 1; i++) {
  var row = values[i];
  Logger.log(row);
 }
};
Run Code Online (Sandbox Code Playgroud)

function onOpen() {
 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 var entries = [{
 name : "Read Data",
 functionName : "readRows"
}];
spreadsheet.addMenu("Script Center Menu", entries);
};
function timestamp() {
return new Date()
}
Run Code Online (Sandbox Code Playgroud)

并且这个代码粘贴在=IF(B6="","",timestamp(B6))单元格4中,这个代码在单元=IF(D6="","",timestamp(C6&B6))格5中.在他的示例跟踪器中它的工作.但当我将它复制到我的时,单元格4和单元格5中的输出是今天的日期,而不是时间.

谁能帮我?为什么输出日期而不是时间?

Arp*_*pan 7

如果这有帮助,您可以参考本教程.在脚本代码中,更改

var timestamp_format = "MM-dd-yyyy"; // Timestamp Format.
Run Code Online (Sandbox Code Playgroud)

var timestamp_format = "MM-dd-yyyy hh:mm:ss"; // Timestamp Format.
Run Code Online (Sandbox Code Playgroud)

这应该可以帮到你.


Iva*_*van 6

我刚刚遇到这个问题,我修改了Internet Geeks提供的代码.

他们的代码通过更新指定的列来工作,时间戳插入另一个指定列的同一行.

我更改的是我将日期和时间分开,因为时间戳是字符串,而不是日期格式.我的方式对于生成图表很有用.

它的工作原理是指定要跟踪更改的列,然后分别为日期和时间创建upDate和upTime列.

function onEdit(event) {
  var timezone = "GMT+1";
  var date_format = "MM/dd/yyyy";
  var time_format = "hh:mm";

  var updateColName = "????????";

  var DateColName = "upDate";
  var TimeColName = "upTime";

  var sheet = event.source.getActiveSheet(); // All sheets
  // var sheet = event.source.getSheetByName('Test'); //Name of the sheet where you want to run this script. 

  var actRng = event.source.getActiveRange();
  var editColumn = actRng.getColumn();
  var index = actRng.getRowIndex();
  var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();

  var dateCol = headers[0].indexOf(DateColName);
  var timeCol = headers[0].indexOf(TimeColName);

  var updateCol = headers[0].indexOf(updateColName);
  updateCol = updateCol + 1;

  if (dateCol > -1 && timeCol > -1 && index > 1 && editColumn == updateCol) {
    // only timestamp if 'Last Updated' header exists, but not in the header row itself! 

    var cellDate = sheet.getRange(index, dateCol + 1);
    var cellTime = sheet.getRange(index, timeCol + 1);

    var date = Utilities.formatDate(new Date(), timezone, date_format);
    var time = Utilities.formatDate(new Date(), timezone, time_format);

    cellDate.setValue(date);
    cellTime.setValue(time);
  }
}
Run Code Online (Sandbox Code Playgroud)

希望这有助于人们.