如何使自动时间戳添加到特定列中?
How To Make Automatic Timestamp To Be Added Into Specific Column?
(这是 - 的后续问题)
我用脚本做了什么:
当人们编辑电子表格中的特定列时,使用 google 应用脚本向每个选项卡上的 'timestamp' 列添加自动时间戳。
在回答问题之前您可能想知道的几件事:
- 此电子表格中共有 6 个标签
- 人们将编辑的特定列和每个工作表中的'timestamp'列在不同的列中
- 人们有时会通过复制粘贴或拖动的方式一次编辑多个单元格(在同一列中)
我的问题:当任何人编辑特定列时,如何将时间戳添加到我想要的列中?
例如:
- 当人们编辑 Apple 选项卡中的 'status' 列(即 A 列)时,时间戳将被添加到 'timestamp' 列(即 B 列)中。
更具体地说,当人们编辑单元格 A2 时,时间戳将添加到 B2
- 当人们编辑 Banana 选项卡中的 'name' 列(即 D 列)时,时间戳将被添加到 'timestamp' 列(即 F 列)中
人们有时会一次编辑多个单元格(拖动或复制粘贴)。
更具体地说,当人们编辑单元格 D34 时,时间戳将添加到 F34
然而,使用我现在使用的代码,而不是 '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”列。
(这是 -
我用脚本做了什么: 当人们编辑电子表格中的特定列时,使用 google 应用脚本向每个选项卡上的 'timestamp' 列添加自动时间戳。
在回答问题之前您可能想知道的几件事:
- 此电子表格中共有 6 个标签
- 人们将编辑的特定列和每个工作表中的'timestamp'列在不同的列中
- 人们有时会通过复制粘贴或拖动的方式一次编辑多个单元格(在同一列中)
我的问题:当任何人编辑特定列时,如何将时间戳添加到我想要的列中?
例如:
- 当人们编辑 Apple 选项卡中的 'status' 列(即 A 列)时,时间戳将被添加到 'timestamp' 列(即 B 列)中。 更具体地说,当人们编辑单元格 A2 时,时间戳将添加到 B2
- 当人们编辑 Banana 选项卡中的 'name' 列(即 D 列)时,时间戳将被添加到 'timestamp' 列(即 F 列)中 人们有时会一次编辑多个单元格(拖动或复制粘贴)。 更具体地说,当人们编辑单元格 D34 时,时间戳将添加到 F34
然而,使用我现在使用的代码,而不是 '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”列。