我按照 youtube 說明復制了這個腳本
var SHEET_NAME = 'Sheet1';
var DATETIME_HEADER = '????';
function getDatetimeCol(){
var headers = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME).getDataRange().getValues().shift();
var colindex = headers.indexOf(DATETIME_HEADER);
return colindex 1;
}
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSheet();
var cell = ss.getActiveCell();
var datecell = ss.getRange(cell.getRowIndex(), getDatetimeCol());
if (ss.getName() == SHEET_NAME && cell.getColumn() == 1 && !cell.isBlank() && datecell.isBlank()) {
datecell.setValue(new Date()).setNumberFormat("yyyy-MM-dd hh:mm:ss");
}
};
我想將此腳本應用于檔案中的所有子表。
所以我嘗試添加更多作業表名稱,例如
var SHEET_NAME = 'Sheet1'; => var SHEET_NAME = ['Sheet1','Sheet2','Sheet3',]
或者
var SHEET_NAME = 'Sheet1';
var SHEET_NAME = 'Sheet2';
var SHEET_NAME = 'Sheet3';
他們沒有作業。
我對這個領域沒有任何,甚至是基本的知識,你能教我如何在整個子表上應用這個腳本嗎?
uj5u.com熱心網友回復:
我根據手頭的任務稍微更改了您的代碼:
SHEET_NAMES = ['Sheet1','Sheet2','Sheet3'];
DATETIME_HEADER = '????';
function onEdit(e) {
let range = e.range,
sheet = range.getSheet();
if (SHEET_NAMES.includes(sheet.getName()) && range.rowStart > 1 && range.columnStart == 1 && !e.value == '') {
let colindex = sheet.getDataRange().getValues().shift().indexOf(DATETIME_HEADER) 1,
datecell = sheet.getRange(range.rowStart,colindex);
if (datecell.isBlank()) datecell.setValue(new Date()).setNumberFormat("yyyy-MM-dd hh:mm:ss");
}
};
我不認為getDatetimeCol()每次在表格中進行更改時都運行是一個好主意- 最好僅在正確的作業表和單元格中發生更改時才執行
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/341599.html
標籤:谷歌表格
