Создать URL для каждого листа из списка имен вкладок - PullRequest
1 голос
/ 29 октября 2019

Вопрос Google Sheets здесь. Предположим, в моей книге есть столбец, в котором каждая ячейка содержит имя вкладки в рабочей книге. Есть ли способ (формула или сценарий) для создания столбца, который содержит URL для каждой из этих вкладок?

Ответы [ 2 ]

1 голос
/ 29 октября 2019

Предположим, у вас есть имена листов, для которых вы хотели получить URL-адреса в столбце 1 Листа 1.

Следующая функция будет читать эти имена в столбце 1 Листа 1, создавать их URL-адреса и размещать их рядом с именами в столбце 2.

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);
}
0 голосов
/ 29 октября 2019

попробуйте так:

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")))

0

...