命名工作表中的getID

时间:2018-10-02 04:13:27

标签: google-apps-script google-sheets google-sheets-api

是否可以从命名工作表中获取ID(字符串)?我正在尝试将过滤器应用于命名工作表。我看到的所有示例都是从活动工作表中获取ID。但我想将其用于命名工作表。我该怎么办?

var resultSheet = spreadsheetApp.getActiveSpreadsheet().getSheetByName("Result");
Sheets.Spreadsheets.batchUpdate({'requests': request}, resultSheet.getSheetId());

3 个答案:

答案 0 :(得分:0)

使用: var sheetID = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Your sheet name").getSheetId();

sheetID将包含带有工作表ID的字符串

在此处查看文档:{​​{3}}

答案 1 :(得分:0)

Google表格有两种相关的“ ID”类型-一种与当前打开的Google表格文件相对应-spreadsheetId(也与Google云端硬盘fileId的值完全相同),以及另一个对应于Google表格电子表格中的特定Sheet,可互换地称为gridId or sheetId

从给定的Sheet对象中,您可以使用类方法getParent()获得对封闭的Spreadsheet对象的引用。 Spreadsheet具有方法getId(),该方法将返回Sheets API batchUpdate方法所需的fileId / spreadsheetId

通常已经有对电子表格的引用:

const wkbk = SpreadsheetApp.getActive();
const sheet = wkbk.getSheetByName("some name");
// ...
Sheets.Spreadsheets.batchUpdate({'requests': request}, wkbk.getId());

根据代码的结构,此引用可能不在范围内,也许您不想/不能在函数的参数列表中包含相关ID:

function foo() {
  const wkbk = SpreadsheetApp.getActive();
  const wkbkId = wkbk.getId();
  // ...
  doSheetUpdate_(wkbk.getSheetByName("some name"));
  // ...
}
function doSheetUpdate_(sheet) {
  const wkbkId = sheet.getParent().getId();
  const rq = getRequest_(sheet.getSheetId());
  // ...
  const resp = Sheets.Spreadsheets.batchUpdate({'requests': rq}, wkbkId);
}
function getRequest_(sheetId) {
  // ...
}

答案 2 :(得分:0)

多亏了帖子,我得到了我一直在寻找的答案。这是我可以使用的代码。

var resultSheet = spreadsheetApp.getActiveSpreadsheet().getSheetByName("Result");
var myID = resultSheet.getParent().getID();
Sheets.Spreadsheets.batchUpdate({'requests': request}, myID);

这将帮助我避免工作表切换。