通过ID获取Google表格?

mrf*_*ith 22 google-sheets google-apps-script

我知道Google Apps脚本有一个针对图纸类的getSheetId()方法,但有没有办法通过引用ID来选择电子表格中的图纸?

我在Spreadsheet Class文档中看不到类似getSheetById()的内容.

Ser*_*sas 22

你可以使用这样的东西:

function getSheetById(id) {
  return SpreadsheetApp.getActive().getSheets().filter(
    function(s) {return s.getSheetId() === id;}
  )[0];
}

var sheet = getSheetById(123456789);
Run Code Online (Sandbox Code Playgroud)

然后找到要用于活动工作表的工作表ID,运行它并检查日志或使用调试器.

function getActiveSheetId(){
  var id  = SpreadsheetApp.getActiveSheet().getSheetId();
  Logger.log(id.toString());
  return id;
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,我一直这样做.您可以执行SpreadsheetApp.openById()并且可以使用getSheetId()看起来非常笨拙,但是您无法按ID选择工作表. (6认同)
  • 如果您使用 Properties Service 保存了工作表 ID,请小心。当您调用 getProperty() 时,它可能与实际的 Sheet id 不完全相同。确保将 Sheet.getSheetId().toString() 传递给 setProperty 方法,而不仅仅是 Sheet.getSheetId()。注意:您可能需要更改处理字符串的方法。 (3认同)

Rod*_*ock 7

查看查询参数的 URL #gid

https://docs.google.com/spreadsheets/d/1Vk7kzMD3DhfUeLasDdSK6Z9ScNrryPrawAxHGFimKp8/edit#gid=910184575

在上面的示例中gid=910184575,因此您可以执行以下操作:

function getSheetById_test(){
  var sheet = getSheetById(910184575);
  Logger.log(sheet.getName());
}

function getSheetById(gid){
  for each (var sheet in SpreadsheetApp.getActive().getSheets()) {
    if(sheet.getSheetId()==gid){
      return sheet;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


小智 6

var sheetActive = SpreadsheetApp.openById("ID");
var sheet = sheetActive.getSheetByName("Name");
Run Code Online (Sandbox Code Playgroud)

  • 如果您知道工作表ID但不知道工作表名称,这将如何帮助选择工作表?SpreadsheetApp.openByID打开电子表格,而不是工作表。 (6认同)
  • @Xzila SpreadsheetApp.openById()打开电子表格,而不是表格,因此它无助于回答所提出的实际问题。 (2认同)