簡體   English   中英

Google 表格在所有表格中運行腳本

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM