[英]Google Sheets run the script in all sheets
我正在嘗試在打開的工作表上實現以下 function 但我想更改所有工作表上的標簽顏色。 有了這個 function,它只允許我將顏色更改為單個選項卡。
function getFirstEmptyRow() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetname = "Section A";
var sheet = ss.getSheetByName(sheetname);
var column = sheet.getRange('F:F');
var values = column.getValues(); // get all data in one call
var ct = 0;
while ( values[ct][0] != "" ) {
ct++;
}
Logger.log("Row "+ ct);
var ax=sheet.getRange(ct, 7).getValue();
if(ax == ""){
sheet.setTabColor("ff0000")
} else {
sheet.setTabColor(null)
}
}
嘗試這個:
function onOpen() {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
sheets.forEach(s => s.setTabColor("ff0000"));
}
從提供的代碼很難看出,可能你需要這個:
function onOpen() {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (var sheet of sheets) {
var data = sheet.getDataRange().getValues(); // get all data
var col_G = data.map(x => x[6]); // get column G
var last_cell = col_G.pop(); // get last cell of column F
if (last_cell == '') sheet.setTabColor("ff0000");
}
}
甚至更短:
function onOpen() {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (var sheet of sheets) {
var data = sheet.getDataRange().getValues();
if (data.pop()[6] == '') sheet.setTabColor("ff0000");
}
}
如果在表格的最后一行 G 列中的單元格為空,它將使選項卡變為紅色。
如果您有幾張要更改的工作表,可以通過以下方式按名稱過濾它們:
var names = ['Sheet1', 'Sheet2', 'Sheet3'];
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
sheets = sheets.filter(s => names.includes(s.getName()));
// the rest of a code
如果任何工作表最后一行的 F 列中的值為空白,我假設您要更改所有工作表的選項卡顏色。 該行中還有其他值。 我已經包含了 onOPen、onEdit 和 onChange。
function onOpen(e) {
// onOpen is a simple trigger and doesn't need to be installed
// don't really use e in this scenario
getFirstEmptyRow();
}
function onEdit(e) {
// onEdit is a simple trigger and doesn't need to be installed
var sheet = e.range.getSheet();
if( e.range.getRow() === sheet.getDataRange().getLastRow() ) {
if( e.range.getColumn() === 6 ) {
if( e.value === "" ) getFirstEmptyRow();
}
}
}
function onChange(e) {
// onChange is an installed trigger
// don't really use e in this scenario
getFirstEmptyRow();
}
function getFirstEmptyRow() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var i=0;
var sheet = null;
var value = null;
var color = null;
for( i=0; i<sheets.length; i++ ) {
sheet = sheets[i];
value = sheet.getRange(sheet.getDataRange().getLastRow(),7).getValue();
color = value === "" ? "ff0000" : null;
sheet.setTabColor(color);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.