如何使自动时间戳添加到特定列中?

How To Make Automatic Timestamp To Be Added Into Specific Column?

(这是 - 的后续问题)

我用脚本做了什么: 当人们编辑电子表格中的特定列时,使用 google 应用脚本向每个选项卡上的 'timestamp' 列添加自动时间戳。

在回答问题之前您可能想知道的几件事:

我的问题:当任何人编辑特定列时,如何将时间戳添加到我想要的列中?

例如:

然而,使用我现在使用的代码,而不是 'timestamp' 列,时间戳将始终添加到 'status' 或 'name' 列旁边的列中.

function onEdit(e) {
addTimestamp(e);
}
function addTimestamp(e) {
  var obj = {"Apple": 1, "Banana": 4}; 
  var range = e.range;
  var sheet = range.getSheet();
  var sheetName = sheet.getName();
  var rowStart = range.rowStart;
  var rowEnd = range.rowEnd;
  var columnStart = range.columnStart;
  var columnEnd = range.columnEnd;
  if (obj[sheetName] && columnStart == columnEnd && columnStart == obj[sheetName] && rowStart >= 2) {
    var time = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd');
    sheet.getRange(rowStart, obj[sheetName] + 1, rowEnd - rowStart + 1).setValue(time);
  }
}

我相信你的目标如下。

  • 您想在编辑其他特定列的单元格时将 time 的值放入特定列。
  • 例如,编辑“A”列的单元格时,您想将值放入“C”列。

在此情况下,我提出如下修改建议。

修改后的脚本:

请根据您的实际情况修改obj

function addTimestamp(e) {
  var obj = { "Apple": { "checkColumn": 1, "putColumn": 3 }, "Banana": { "checkColumn": 4, "putColumn": 6 } };

  var range = e.range;
  var sheet = range.getSheet();
  var sheetName = sheet.getName();
  var rowStart = range.rowStart;
  var rowEnd = range.rowEnd;
  var columnStart = range.columnStart;
  var columnEnd = range.columnEnd;
  if (obj[sheetName].checkColumn && columnStart == columnEnd && columnStart == obj[sheetName].checkColumn && rowStart >= 2) {
    var time = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd');
    sheet.getRange(rowStart, obj[sheetName].putColumn, rowEnd - rowStart + 1).setValue(time);
  }
}
  • 在此脚本中,当编辑“Apple”sheet 的“A”列时,time 的值将放入“C”列。当“香蕉”sheet 的“D”列被编辑时,time 的值被放入“F”列。