如何在 Google Apps 脚本中使用部分字符串 GetSheetByName

Thi*_*ham 2 google-sheets google-apps-script

我正在尝试使用 .getSheetByName('') 来获取名称包含特定字符串(例如“V1”或“V4”)的工作表,而不是完全匹配。假设工作表的名称是“2020 0304 V1”,第一部分总是在变化,但它包含 V1,我尝试了 .getSheetByName('*V1') 但它不起作用。关于如何实现这一目标有任何提示吗?

Tan*_*ike 6

问题和解决方法:

不幸的是,在现阶段,像正则表达式这样的方法不能与getSheetByName(). 所以在这种情况下,就需要使用变通办法。

在这个答案中,我想提出两种模式。

模式一:

在此模式中,test用于搜索工作表名称。getSheetName()用于检索工作表名称。在本例中,它假设模式类似于2020 0304 V1

示例脚本:

function myFunction() {
  const searchText = "V1";
  
  const sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  const regex = RegExp(`\\d{4} \\d{4} ${searchText}`);
  const sheet = sheets.filter(s => regex.test(s.getSheetName()));
  if (sheet.length > 0) console.log(sheet[0].getSheetName());
}
Run Code Online (Sandbox Code Playgroud)
  • 在这种情况下,如果您的电子表格中只有一张具有 图案的工作表名称的工作表\d{4} \d{4} V1,您可以通过 检索该工作表sheet[0]

模式2:

在此模式中,includes用于搜索工作表名称。getSheetName()用于检索工作表名称。

示例脚本:

function myFunction() {
  const searchText = "V1";

  const sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  const sheet = sheets.filter(s => s.getSheetName().includes(searchText));
  if (sheet.length > 0) console.log(sheet[0].getSheetName());
}
Run Code Online (Sandbox Code Playgroud)
  • 在这种情况下,如果只有一张工作表的工作表名称包含V1在您的电子表格中,您可以通过 检索该工作表sheet[0]

笔记:

  • 在这种情况下,请在脚本编辑器中启用 V8。

参考: