簡體   English   中英

Google表格根據當前標簽的單元格值按名稱調用工作表

[英]Google Sheets call sheet by name based on cell value of current tab

我試圖通過創建函數來隱藏或取消隱藏特定的選項卡。 問題是工作表名稱會根據使用它的人而改變。 是否可以根據當前選項卡上單元格的值獲取工作表名稱?

例子:

function HideIncOne() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('G18').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('INCENTIVE #1'), true);
  spreadsheet.getActiveSheet().hideSheet();
};

我試過 .getSheetByRange 但顯然沒有用。 所以我試圖從當前選項卡的單元格 B4 中調用文本,並使谷歌工作表隱藏與單元格 B4 中文本同名的工作表。

  • 獲取活動工作表的B4
  • 使用getSheetByName獲取具有該名稱的getSheetByName並隱藏它
function HideSheetInB4() {
  const spreadsheet = SpreadsheetApp.getActive();
  spreadsheet
    .getSheetByName(
      spreadsheet
        .getActiveSheet()
        .getRange('B4')
        .getValue()
    )
    .hideSheet();
}

這是將開發人員元數據放入選定工作表的簡單方法

在這種情況下,我只想弄亂以字符串“Sheet”命名的工作表,后跟 1 個或多個數字。

因此正則表達式/Sheet\\d{1,}//Sheet\\d+/

function addingmetadatatosomesheet() {
  const ss = SpreadsheetApp.getActive();
  ss.getSheets().forEach((sh, i) => {
    if (sh.getName().match(/^Sheet\d{1,}/)) {
      sh.addDeveloperMetadata('shidx', i + 1);
    }
  });
}

這就是我讀取元數據的方式。

function findSheetMetaData() {
  const ss = SpreadsheetApp.getActive();
  ss.getSheets().forEach(sh => {
    let v = sh.createDeveloperMetadataFinder().withKey('shidx').find();
    if (v && v.length > 0) {
      v.forEach(e => {
        Logger.log(`SheetName: ${sh.getName()} Metadata: ${e.getValue()}`);
      });
    }
  });
}

執行日志輸出:

1:37:31 PM  Info    SheetName: Sheet01 Metadata: 7.0
1:37:31 PM  Info    SheetName: Sheet1 Metadata: 8.0
1:37:31 PM  Info    SheetName: Sheet2 Metadata: 9.0
1:37:32 PM  Info    SheetName: Sheet3 Metadata: 10.0
1:37:32 PM  Info    SheetName: Sheet4 Metadata: 11.0
1:37:32 PM  Info    SheetName: Sheet5 Metadata: 12.0
  • 這代表了一種解決方案,您的臨時用戶不會輕易弄亂。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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