【问题标题】:Generate URL for each sheet from a list of tab names从选项卡名称列表中为每个工作表生成 URL
【发布时间】:2019-10-28 22:47:29
【问题描述】:

此处有 Google 表格问题。假设我的工作簿中有一个列,其中每个单元格都包含工作簿中选项卡的名称。有没有办法(公式或脚本)生成包含每个选项卡的 URL 的列?

【问题讨论】:

  • “包含 URL”是什么意思?与所需输出的示例共享您的工作表副本

标签: google-apps-script google-sheets hyperlink google-sheets-formula array-formulas


【解决方案1】:

试试这样:

function SHEETLIST() {
try {
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets()
  var out = new Array( sheets.length+1 ) ;
  out[0] = [ "NAME" , "#GID" ];
  for (var i = 1 ; i < sheets.length+1 ; i++ ) out[i] = 
  [sheets[i-1].getName() , sheets[i-1].getSheetId() ];
  return out
}
catch( err ) {
  return "#ERROR!" 
}
}

=ARRAYFORMULA(HYPERLINK("#gid="&
 QUERY(INDEX(SHEETLIST();;2); "offset 1"); 
 QUERY(INDEX(SHEETLIST();;1); "offset 1")))

【讨论】:

    【解决方案2】:

    假设您在 Sheet1 的 column1 中有您想要 url 的工作表名称。

    下面的函数将读取 Sheet1 的 column1 中的这些名称并创建它们的 url 并将它们放置在 Column2 中的名称旁边。

    function listedSheetUrls() {
      var ss=SpreadsheetApp.getActive();
      var sh=ss.getSheetByName('Sheet1');
      var rg=sh.getRange(1,1,sh.getLastRow(),1);
      var vA=rg.getValues();
      var nA=vA.map(function(r){return r[0];});
      var shts=ss.getSheets();
      shts.forEach(function(sh,i){
        var idx=nA.indexOf(sh.getName());
        if(idx!=-1) {
          var url=Utilities.formatString('https://docs.google.com/spreadsheets/d/%s/edit#gid=%s',ss.getId(),sh.getSheetId());
          vA[idx].splice(1,0,url);
        }
      });
      sh.getRange(1,1,vA.length,vA[0].length).setValues(vA);
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-02
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多