[英]Google sheet separate log page with sellected columns script
我有一个谷歌表格问题。 我的主页(名称为“MAIN”,从其他工作表中收集数据。因此,“MAIN”工作表如下所示: MAIN
我想创建一个单独的日志页面,当有人更改他的酒店时,它只收集“主要”工作表数据,在他的名字旁边。 (酒店栏在 MAIN 表的第 4 位)
..所以“LogSheet”需要收集带有时间戳的第 1 秒和第 4 列。
所以最后会有一个列表(谁去了,哪家酒店和什么时候)。 它需要是这样的, LogSheet ,但我写不出来:/
function onEdit(e) {
var sheetsToWatch = ["MAIN"];
var changelogSheetName = ["LogSheet"];
var timestamp = new Date();
var row = e.range.getRow();
var col = e.range.getColumn();
var sheetName = sheet.getName();
if(col === 4 && row > 1 && e.source.sheetsToWatch() .getName() === "MAIN" ){
e.changelogSheetName().getRange('MAIN', row,1).setValue(new Date());
}
}
()
的情况下被调用 - ()
保留用于函数调用[]
括号中。 []
括号将变量指定为数组,并且需要以不同的方式处理。==
e.source
返回进行编辑的电子表格。 在查询e.source.getActiveSheet()
时,您将在大多数情况下正确获得进行编辑的工作表,但考虑到例外情况,最好将事件 object range
与方法https://developers 一起使用。 google.com/apps-script/reference/spreadsheet/range#getsheet请查看以下示例中的修改。
带有工作表数组的示例
function onEdit(e) {
var sheetsToWatch = ["MAIN", "add another sheet if desired" ];
var changelogSheetName = "LogSheet";
var logSheet = SpreadsheetApp.getActive().getSheetByName(changelogSheetName);
var timestamp = new Date();
var row = e.range.getRow();
var col = e.range.getColumn();
var sheet = e.range.getSheet();
var sheetName = sheet.getName();
Logger.log(e.range.getSheet().getName());
if(col === 4 && row > 1 && sheetsToWatch.indexOf(sheetName)!=-1){
logSheet.getRange(row,1).setValue(new Date());
//do whatever else you want
}
}
以单张纸作为变量的样本
function onEdit(e) {
var sheetsToWatch = "MAIN";
var changelogSheetName = "LogSheet";
var logSheet = SpreadsheetApp.getActive().getSheetByName(changelogSheetName);
var timestamp = new Date();
var row = e.range.getRow();
var col = e.range.getColumn();
var sheet = e.range.getSheet();
var sheetName = sheet.getName();
Logger.log(e.range.getSheet().getName());
if(col === 4 && row > 1 && sheetsToWatch ==sheetName){
logSheet.getRange(row,1).setValue(new Date());
//do whatever else you want
}
}
更新
对于您的情况,最方便的是从已编辑的行中检索值,并按所需的顺序将 append 检索到LogSheet
样本
function onEdit(e) {
var sheetsToWatch = "MAIN";
var changelogSheetName = "LogSheet";
var logSheet = SpreadsheetApp.getActive().getSheetByName(changelogSheetName);
var timestamp = new Date();
var row = e.range.getRow();
var col = e.range.getColumn();
var sheet = e.range.getSheet();
var sheetName = sheet.getName();
if(col === 4 && row > 1 && sheetsToWatch ==sheetName){
var values = sheet.getRange(row,1,1,4).getValues()[0];
logSheet.appendRow([new Date(), values[0], values[1], values[3]]);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.