Ищите одно приложение Google Script для 4 вкладок листа, чтобы получить один JSON - PullRequest
0 голосов
/ 03 ноября 2018

Хорошо ... не уверен, как это сделать. Прямо сейчас у меня 4 листа и 4 сценария для каждого листа, производящие 4 потока json Я пытаюсь поэкспериментировать с одним скриптом, который выдаст 1 json, который я могу использовать на веб-странице и просто вызвать тип класса. Все они отформатированы одинаково с колонками и т. Д.

Вот код приложения Google Script, который у меня есть.

    function doGet(e){

 // Change Spread Sheet url
 var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/SpreadsheetID/edit#gid=0");

// Sheet Name, Change Sheet to whatever name you used to name your sheet
 var sheet = ss.getSheetByName("Class Sheet 1");

 return getClasses(sheet); 

}

function getClasses(sheet){
  var dataObj = {};
  var dataArray = [];

// collecting data starting from 2nd Row , 1st column to last row and last column
  var rows = sheet.getRange(2,1,sheet.getLastRow()-1, sheet.getLastColumn()).sort([{column: 1, ascending: true}, 1]).getValues();

  for(var i = 0, l= rows.length; i<l ; i++){
    var dataRow = rows[i];
    var record = {};

    record['Name'] = dataRow[0];
    record['Note'] = dataRow[1];
    record['Address'] = dataRow[2];
    record['StreetAddress'] = dataRow[3];
    record['City'] = dataRow[4];
    record['State'] = dataRow[5];
    record['ZipCode'] = dataRow[6];
    record['ContactName'] = dataRow[7];
    record['EMailAddress'] = dataRow[8];
    record['CustomerServicePhone'] = dataRow[9];

    dataArray.push(record);

  }

  dataObj = dataArray;

  var result = JSON.stringify(dataObj);

  return ContentService.createTextOutput(result).setMimeType(ContentService.MimeType.JSON);

 } 

Немного почесывая голову об этом ... Я уверен, что это что-то простое, и я, вероятно, слишком обдумываю вещи, но любая помощь будет признательна.

1 Ответ

0 голосов
/ 03 ноября 2018

Возможное решение:

Объект e в вашем doGet(e) предоставляет способ отправки параметров в ваш скрипт. Вы можете получить доступ к различным листам с разными параметрами URL. Затем вы можете легко получить запрошенное SheetName через e.parameter. Используйте

https://script.google.com/.../exec?sheet=ClassSheet1 //for ClassSheet1
https://script.google.com/.../exec?sheet=ClassSheet2 //for ClassSheet2

Code.gs:

function doGet(e){
 var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/SpreadsheetID/edit#gid=0");
 var sheetName = e.parameter.sheet;
 var sheet = ss.getSheetByName(sheetName);
 return getClasses(sheet); 
}

Вы также можете предоставить пользовательский интерфейс в своем веб-приложении для выбора листа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...