Поиск значений в Google Таблицах с использованием идентификатора листа вместо заголовка (Google Drive Rest API V4)

Используя Google Sheets REST API V4, и предпочел бы использовать идентификатор листа вместо заголовка для поиска значений в ячейке. Похоже, вы можете указать лист в электронной таблице, используя диапазон, например Sheet4!A1:Z500, но не идентификатор листа, например 1310487470!A1:Z500. Это сделано для того, чтобы запрос не изменился, если кто-то переименует лист. Поддерживает ли Google API запросы по идентификатору?

Текущий запрос:

https://sheets.googleapis.com/v4/spreadsheets/1SR0DJ4nV5-05EWxjz1OYOWkKFObClmsC0rOowPnMwNE/values/Sheet4!A1:Z500

Идеальный запрос:

https://sheets.googleapis.com/v4/spreadsheets/1SR0DJ4nV5-05EWxjz1OYOWkKFObClmsC0rOowPnMwNE/values/1310487470!A1:Z500


person yayitswei    schedule 27.04.2017    source источник
comment
Я еще не нашел, как использовать нотацию GID в A1. Как насчет этого? Например, он извлекает и sheetId (GID), и его заголовок, используя sheets.spreadsheets.get, и создает нотацию A1, используя заголовок для GID. Запрос URL: https://sheets.googleapis.com/v4/spreadsheets/sheetID?fields=sheets(properties(sheetId%2Ctitle)). Объем https://www.googleapis.com/auth/spreadsheets.readonly может использоваться для обоих API. Если это вам не поможет, извините.   -  person Tanaike    schedule 28.04.2017
comment
Я только что подтвердил со службой поддержки GSuite, что поддерживаемого способа нет. Они видят необходимость запроса по идентификатору и рекомендуют мне подать запрос функции. А пока ваш обходной путь кажется правдоподобным, спасибо @Tanaike!   -  person yayitswei    schedule 28.04.2017
comment
Если вам нужен образец сценария, не стесняйтесь сообщить мне. Я могу это приготовить.   -  person Tanaike    schedule 29.04.2017
comment
Я уже реализовал это, но если у вас есть время опубликовать свой сценарий, возможно, он поможет кому-то еще здесь.   -  person yayitswei    schedule 07.05.2017
comment
Выложил только что. Я выбрал ГАЗ как образец.   -  person Tanaike    schedule 08.05.2017


Ответы (1)


Как насчет следующего образца? Я приготовил его как пробу ГАЗА. Если вы используете это, включите Sheet API v4 в консоли API.

Это извлекает данные листа в электронную таблицу с помощью GID.

  1. Получает информацию о листах в электронной таблице. Создаются данные JSON с ключами GID и значениями имени листа.

  2. Извлекает данные из листа с помощью JSON.

Пример сценария:

function fetch(url){
  return UrlFetchApp.fetch(url, {
    headers: {
      'Authorization': 'Bearer ' +  ScriptApp.getOAuthToken()
    }
  });
}

function main(){
  // Retrieves information of sheets in spreadsheet. 
  var spreadsheet = "#####";
  var url = "https://sheets.googleapis.com/v4/spreadsheets/" + spreadsheet + "?fields=sheets(properties(sheetId%2Ctitle))";
  var sheetdic = {};
  JSON.parse(fetch(url)).sheets.forEach(function(e){
    sheetdic[e.properties.sheetId] = e.properties.title;
  });

  // Retrieves data from sheet using GID.
  var sheet = sheetdic["#####"]; // Imports sheet name using GID.
  var url = "https://sheets.googleapis.com/v4/spreadsheets/" + spreadsheet + "/values/" + sheet + "!A1:Z500";
  var results = fetch(url);
}
person Tanaike    schedule 07.05.2017