getID из именованного листа - PullRequest
0 голосов
/ 02 октября 2018

Есть ли способ получить идентификатор (строку) из именованного листа?Я пытаюсь применить фильтр к именованному листу.Все примеры, которые я видел, - это получение идентификатора из активного листа.Но я хочу использовать его для именного листа.Как мне это сделать?

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

Ответы [ 3 ]

0 голосов
/ 02 октября 2018

Существует два соответствующих типа «ID» для Google Sheets - один соответствует открытому в настоящее время файлу Google Sheets - spreadsheetId, который также является тем же значением, что и Google Диск fileId- а другой соответствует определенной Sheet в электронной таблице Google Sheets и взаимозаменяемо известен как gridId или sheetId.

ИзДля данного Sheet объекта вы можете использовать метод класса getParent(), чтобы получить ссылку на включающий Spreadsheet объект.A Spreadsheet имеет метод getId(), который возвращает необходимый fileId / spreadsheetId для метода API листов batchUpdate.

Очень часто уже есть ссылка на электронную таблицу:

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

В зависимости от того, как структурирован ваш код, эта ссылка может быть вне области, и, возможно, вы не хотите/ не может включить соответствующий идентификатор в список аргументов функции:

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) {
  // ...
}
0 голосов
/ 03 октября 2018

Благодаря посту я получил ответ, который искал.Вот код, который я могу использовать.

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

Это поможет мне избежать переключения листа.

0 голосов
/ 02 октября 2018

Использование: var sheetID = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Your sheet name").getSheetId();

sheetID будет содержать строку с идентификатором листа

См. Документацию здесь: https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getsheetid

...