Google 通过公式而不是脚本在单元格中显示表格文件名?

Google Sheets filename in cell via formula instead of a script?

是否有 FORMULA 可以在单元格中显示文件名?

我找到了可以执行此操作的脚本,可以显示 sheet 名称的公式,但没能找到显示文件名的公式。

如果我必须求助于脚本,那就这样吧。但我想尽可能使用公式。

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

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

正在获取 sheet 的名称 sheet 此公式用于:

function SHEETNAME() {
  return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
}


列出所有 sheet 名称和 gids:

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


或 sheet 名称基于顺序(例如从左到右最左边的是 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!" 
}
}


传播sheet 姓名及更多:

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
  };
};