[英]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.