此处是Google表格问题。假设我在工作簿中有一列,其中每个单元格都包含工作簿中选项卡的名称。有没有一种方法(公式或脚本)来生成包含每个选项卡URL的列?
答案 0 :(得分:1)
假设您在Sheet1的column1中有想要用作URL的工作表名称。
下面的函数将在Sheet1的column1中读取这些名称,并创建其网址,并将其放在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);
}
答案 1 :(得分:0)
尝试这样:
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")))