代码之家  ›  专栏  ›  技术社区  ›  Shawa

如何获得每个工作表的URL,并使用googlesheet脚本自动将其设置在A1范围内,用于电子表格中的所有工作表?

  •  1
  • Shawa  · 技术社区  · 1 年前

    我想使用Googlesheet脚本来导出每张表单的URL,并将其粘贴到每张表单的A1范围中,这样我就可以稍后在一张MAIN表单中收集它们

    请注意,脚本中应忽略工作表名称“Main”,因此脚本不会获得此工作表URL

    我试着在这里制作剧本,但它给了我错误

    function getUrl() {
      const urls = SpreadsheetApp.getActive().getSheets().map(s => s.getUrl());
      SpreadsheetApp.getActive().getSheets().forEach(s => {
        s.getRange('B3').setValue(s.getUrl());
      });
    }
    
    1 回复  |  直到 1 年前
        1
  •  0
  •   Tanaike    1 年前

    我相信你的目标如下。

    • 您希望检索除“主”工作表之外的每个工作表的URL。
    • 您希望将URL放入每张工作表的单元格“A1”中。

    修改要点:

    • 不幸的是,Class Sheet没有 getUrl
    • 你说 I want to use Googlesheet script to exctract each sheet URL and paste it in range A1 of each sheet 。但是,在你的摘录中, s.getRange('B3').setValue(s.getUrl()); 使用。

    当这些点反映在示例脚本中时,它将变为如下所示。

    示例脚本:

    function getUrl() {
      const ignoreSheet = "Main"; // This is from your question.
    
      const ss = SpreadsheetApp.getActiveSpreadsheet();
      const baseUrl = ss.getUrl();
      const sheets = ss.getSheets();
      sheets.forEach(sheet => {
        if (sheet.getSheetName() != ignoreSheet) {
          sheet.getRange("A1").setValue(`${baseUrl}#gid=${sheet.getSheetId()}`);
        }
      });
    }
    
    • 在这种情况下,每个工作表的URL由“类电子表格的getUrl()”和“类工作表的getSheetId()”创建。
    • 运行此脚本时,将检索除“Main”工作表之外的每个工作表的URL,并将每个URL放入每个工作表中的单元格“A1”中。

    参考文献:

    已添加:

    关于以下第二个问题,

    如果你允许的话,我还有另一个问题,如果我想忽略多张纸而不是只忽略一张纸,例如“Main”&“CS”床单那我该怎么办??

    在这种情况下,下面的示例脚本如何?

    function getUrl() {
      const ignoreSheets = ["Main", "CS"]; // This is from your question.
    
      const ss = SpreadsheetApp.getActiveSpreadsheet();
      const baseUrl = ss.getUrl();
      const sheets = ss.getSheets();
      sheets.forEach(sheet => {
        if (!ignoreSheets.includes(sheet.getSheetName())) {
          sheet.getRange("A1").setValue(`${baseUrl}#gid=${sheet.getSheetId()}`);
        }
      });
    }