Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 从选项卡名称列表为每个工作表生成URL_Google Apps Script_Google Sheets_Hyperlink_Google Sheets Formula_Array Formulas - Fatal编程技术网

Google apps script 从选项卡名称列表为每个工作表生成URL

Google apps script 从选项卡名称列表为每个工作表生成URL,google-apps-script,google-sheets,hyperlink,google-sheets-formula,array-formulas,Google Apps Script,Google Sheets,Hyperlink,Google Sheets Formula,Array Formulas,这里有一个问题。假设我的工作簿中有一列,其中每个单元格都包含工作簿中某个选项卡的名称。是否有方法(公式或脚本)生成包含每个选项卡URL的列?尝试如下: function SHEETLIST() { try { var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets() var out = new Array( sheets.length+1 ) ; out[0] = [ "NAME" , "#GID" ]; for

这里有一个问题。假设我的工作簿中有一列,其中每个单元格都包含工作簿中某个选项卡的名称。是否有方法(公式或脚本)生成包含每个选项卡URL的列?

尝试如下:

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!" 
}
}

假设在Sheet1的第1列中有需要URL的工作表名称

下面的函数将读取Sheet1第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);
}
“包含URL”是什么意思?与所需输出示例共享工作表副本
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);
}