Задать вопрос
transcend
@transcend

Как получить доступ к нескольким листам Google Spreadsheet через AppsScript?

Имеется документ в Google Spreadsheets с несколькими листами. На каждом из листов по таблице с данными. Назовем их List1, List2

Для получения данных в JSON я через редактор скриптов Apps Script использую код:
var ss = SpreadsheetApp.getActiveSpreadsheet(), // spreadsheet
      s = ss.getActiveSheet(); // sheet

function getData(){
  var result = [],
      range = 'A:F', // диапазон ячеек, который хотим выгружать
      values = s.getRange(range).getValues(),
      last_row = parseInt(s.getLastRow());
    
  for (var i = 1; i < last_row; i++) {
      result.push(values[i]);     
  }
  return result; 
}


function doGet() {
  var data = getData();
  if(!data) {
    data = '';
  }
  return ContentService.createTextOutput(
    JSON.stringify({'result': data})).setMimeType(ContentService.MimeType.JSON);
}


Развертываю скрипт и получаю ссылку, которая отдает JSON.

Вопрос заключается в следующем, как сделать так, чтобы получать доступ к нужному листу по выбору? Т.е. если нужно к List1, если нужно к List2?

В AppsScript если сделать копию файла и поменять код на:
var ss = SpreadsheetApp.getActiveSpreadsheet(), // spreadsheet
      s = ss.getSheetByName("List2"); // sheet

function getData(){
  var result = [],
      range = 'A:F', // диапазон ячеек, который хотим выгружать
      values = s.getRange(range).getValues(),
      last_row = parseInt(s.getLastRow());
    
  for (var i = 1; i < last_row; i++) {
      result.push(values[i]);     
  }
  return result; 
}


function doGet() {
  var data = getData();
  if(!data) {
    data = '';
  }
  return ContentService.createTextOutput(
    JSON.stringify({'result': data})).setMimeType(ContentService.MimeType.JSON);
}


то получаем доступ опять же только к одному листу и развернутый скрипт будет отдавать данные только с него.

Нужно решение, чтобы получать доступ к любому листу.
  • Вопрос задан
  • 229 просмотров
Подписаться 1 Сложный Комментировать
Решения вопроса 1
Fzero0
@Fzero0
Вечный студент
А если просто принимать get с параметром, в параметре передавать лист?
function doGet(e){
  var list = e.parameter.list;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы