通过公式而不是脚本在单元格中的 Google Sheets 文件名?

TC7*_*C76 6 google-sheets google-apps-script google-sheets-formula

是否有FORMULA将在单元格中显示文件名的方法?

我找到了可以执行此操作的脚本,可以显示工作表名称的公式,但是找不到可以显示文件名的公式。

如果我不得不求助于脚本,那就这样吧。但如果可能的话,我想使用公式。

如果之前有人问过这个问题,请把我指向那个帖子,我会删除这个帖子。

pla*_*er0 5

没有这样的公式。Google 表格的当前限制不支持仅通过内部公式获取工作表名称,因此您需要求助于脚本。这里有一些变化:

获取使用此公式的工作表的工作表名称:

function SHEETNAME() {
  return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
}
Run Code Online (Sandbox Code Playgroud)

0


列出所有工作表名称和 gid:

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!" 
}
}
Run Code Online (Sandbox Code Playgroud)

0


或基于顺序的工作表名称(例如,从左到右最左边为 1):

function SHEET(input) {
try {
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets() ;
  if( (input>0) && (input <= sheets.length)) return sheets[(input-1)].getName() ;
  else return "invalid sheet #" ;
}
catch( err ) {
  return "#ERROR!" 
}
}
Run Code Online (Sandbox Code Playgroud)

0


获取电子表格名称等:

function SNAME(option) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet()
  var thisSheet = sheet.getName(); 
  if(option === 0){                            // ACTIVE SHEET NAME =SNAME(0)
    return thisSheet;
  }else if(option === 1){                      // ALL SHEET NAMES =SNAME(1)
    var sheetList = [];
    ss.getSheets().forEach(function(val){
       sheetList.push(val.getName())
    });
    return sheetList;
  }else if(option === 2){                      // SPREADSHEET NAME =SNAME(2)
    return ss.getName();    
  }else{
    return "#N/A";                             // ERROR MESSAGE
  };
};
Run Code Online (Sandbox Code Playgroud)

0


hor*_*mal 1

No\xe2\x80\x94 不幸的是,任何内置函数都不可能做到这一点。

\n

使用函数执行此操作的唯一方法是使用 AppScript 编写自定义函数,这本质上又回到了编写脚本。

\n