Как отправить данные из Google Appscript на HTML-страницу - PullRequest
1 голос
/ 15 октября 2019

У меня есть скрипт приложения Google, который имеет несколько функций. Я хочу отобразить некоторые данные на боковой панели html page . Вот что я проверил.

function getColumnData(sheetName){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
    var rangeData = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues();
    var firstRow = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
    var firstRowMapped = firstRow.reduce(function(a, b) {return a.concat(b)}); // to convert 2d to 1d
    Logger.log(firstRowMapped);
    return firstRowMapped;
} // returns the first Row t html form for population

и на html-стороне я хочу получить все, что возвращает эта функция.

function getRow() {
        var sheetName = document.getElementById("sheetname").value.toString();
        var firstRow = getColumnData(sheetName);
        var checkBox = document.getElementById("checkboxes");
        var firstRow = google.script.run.getColumnData(sheetName)
        for (var columns in firstRow){
        checkBox.innerHTML += `<label>
        <input type="checkbox" value="${firstRow[columns]}"/>
        <span>${firstRow[columns]}</span>
      </label><br>`
      }
      }

Это должно работать в соответствии с моим пониманием. Но, к сожалению, он не получает никаких данных. Есть идеи почему?

1 Ответ

1 голос
/ 15 октября 2019

это сработало для меня. Вам нужно будет передать функцию для получения данных в withSuccessHandler()

google.script.run.withSuccessHandler("a function that will receive the data")."the function that gets the data"
// in my case
      function getRow() {
        var sheetName = document.getElementById("sheetname").value.toString();

        google.script.run
          .withSuccessHandler(populateChecks)
          .getColumnData(sheetName);
      }
      function populateChecks(firstRow) {
        var checkBox = document.getElementById("checkboxes");
        for (var columns in firstRow) {
          checkBox.innerHTML += `<label>
        <input type="checkbox" value="${firstRow[columns]}"/>
        <span>${firstRow[columns]}</span>
      </label><br>`;
        }
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...