目前使用此脚本获取时间戳
function onEdit(e) {
var s = SpreadsheetApp.getActiveSheet();
if (s.getName() == 'Subsidy Portions') {
var colWatch = 6; // column to watch, 5 = "E"
var colRecord = 9; // column for timestamp, 6 = "F"
if (e.range.getColumn() == colWatch) {
e.range.offset(0, colRecord - colWatch).setValue(new Date());
}
}}
但是,现在需要在同一个文件中引用不同的工作表。
在colWatch = 2
表
Notes
在colRecord = 9
表上和Subsidy Portions
谢谢!
答案 0 :(得分:1)
如果我理解正确,当注释表中的第2列发生更改时,您希望在补贴部分表中向第9列添加时间戳。为此,您需要添加另一个IF()部分,因为每次编辑文件时都会运行提供的代码(未经测试):
function onEdit(e) {
var s = SpreadsheetApp.getActiveSheet();
if (s.getName() == 'Subsidy Portions') {
var colWatch = 5; // column to watch, 5 = "E"
var colRecord = 8; // column for timestamp, 6 = "F"
if (e.range.getColumn() == colWatch) {
e.range.offset(0, colRecord - colWatch).setValue(new Date());
}
}
if (s.getName() == 'Notes') {
var colWatch = 2; // column to watch, 5 = "E"
var colRecord = 9; // column for timestamp, 6 = "F"
if (e.range.getColumn() == colWatch) {
var sReceivingSheet = SpreadsheetApp.getSheetByName('Subsidy Portions');
var myRow = e.range.getRow();
var editRange = sReceivingSheet.getRange(myRow, colRecord);
editRange.setValue(new Date());
}
}
}
<强>解释强>:
将此s设置为活动工作表,即已编辑以触发该功能的工作表。 s.geName获取该工作表的名称,并对其进行测试,以查看该名称是否与{}内代码的名称相匹配。
if (s.getName() == 'Subsidy Portions') {
// Code...
}
在备注的IF部分内,这会将名为 Subsidy Portions 的工作表加载到sReceivingSheet中,获取在备注中编辑的行表格,并假设我们正在编辑补贴部分中的同一行。然后,它使用该列和列进行编辑以获取单个单元格的范围,将其保存在editRange中,然后将新日期添加到该单元格。
var sReceivingSheet = SpreadsheetApp.getSheetByName('Subsidy Portions');
var myRow = e.range.getRow();
var editRange = sReceivingSheet.getRange(myRow, colRecord);
editRange.setValue(new Date());
如果您需要在第二部分中编辑另一行,我们需要更多代码来获取所有数据并循环直到找到正确的行才能找到该行。我建议在Tutorial: Simple Mail Merge
的示例代码中查看getRowData()函数