Как я могу использовать данные Google Sheet на боковой панели, а также в пределах <script>? - PullRequest
0 голосов
/ 17 марта 2019

В настоящее время я работаю со следующим учебником, чтобы отобразить данные листа Google на боковой панели: https://yagisanatode.com/2018/02/12/how-to-get-something-from-google-sheets-and-display-it-in-the-sidebar-in-google-apps-script/#more-219

Однако я хотел бы добавить цикл «в» в моем html-файле, чтобы отобразить несколько флажков (см. Код ниже). В конечном счете, я хочу изменить число «16» на значение «rangeResult» из моей электронной таблицы. Можете ли вы предложить предложения о том, как это сделать?

Code.gs - функция

function numEarlyRelease() {  
  var doc = SpreadsheetApp.openById("1OF6Y1CTU9dkIgd1P-nw-5f2lqHSS5cGZytndwzJhw-o");
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var numValues = ss.getRange('R19').getValue();
  return numValues;
}

Page.html file

<!DOCTYPE html>
<html>
 <head>
   <base target="_top">
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
 </head>
  <body>
    <h3><script> document.write(new Date().toLocaleDateString()); </script></h3>

    <div id="rangeResult"></div>
    <script>
    function addRange(rangeStartEnd){ 
      $('#rangeResult').text(rangeStartEnd);
    };
    for (var i = 1; i <=16; i++) {
      document.write('<br><input type="checkbox" name="scores" id="i" value="i">'+ i);
    }

    google.script.run.withSuccessHandler(addRange).numEarlyRelease();
    </script> 

    <br><input type="button" value="Submit Check-In" onclick="google.script.host.close()" />
    <input type="button" value="Close" onclick="google.script.host.close()" />   
  </body>
</html>

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Спасибо за ваши предложения! Ниже мое решение. (Я изменил имена некоторых переменных в соответствии с моим проектом.)

Code.gs

function earlyRelease(e) {
  var doc = SpreadsheetApp.openById("1OF6Y1CTU9dkIgd1P-nw-5f2lqHSS5cGZytndwzJhw-o");
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var numValues = ss.getRange('R19').getValue();
  var studentName = ss.getSheetValues(20, 18, numValues, 1);

  var html = HtmlService.createHtmlOutputFromFile('Page')
      .setTitle('Early Release')
      .setWidth(300);
  SpreadsheetApp.getUi().showSidebar(html);  }

function earlyReleaseList() {
  var doc = SpreadsheetApp.openById("1OF6Y1CTU9dkIgd1P-nw-5f2lqHSS5cGZytndwzJhw-o");
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var numValues = ss.getRange('R19').getValue();
  var studentNames = ss.getSheetValues(20, 18, numValues, 1);
  return studentNames; }

page.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  </head>
  <body>
    <script>
    function addStudents(studentList){ 
      $('#rangeResult').text(studentList);

      document.write(new Date().toLocaleDateString());

      var students = [];
      //The following loop was added to the function
      for (var i = 0; i < studentList.length; i++) {
        document.write('<br><input type="checkbox" name="students" id="i" value="i">'+ studentList[i]);
      }
      //Also added the buttons to the function with document.write rather than html tags outside of the function
      document.write('<br><input type="button" value="Submit Early Release" onclick="google.script.host.close()" />');
      document.write('<input type="button" value="Close" onclick="google.script.host.close()" />');
    };

    google.script.run.withSuccessHandler(addStudents).earlyReleaseList();
    </script> 
  </body>
</html>
0 голосов
/ 17 марта 2019

вызов функции -

google.script.run.withSuccessHandler(addRange).numEarlyRelease();

Означает, что функция numEarlyRelease() возвращает значение, в данном случае numValues оно доступно в качестве аргумента функции addRange(). addRange() принимает параметр rangeStartEnd, поэтому он будет иметь значение numValues. Вы можете использовать это, как вам нравится. Например, если это число -

for (var i = 1; i <=rangeStartEnd; i++) {
  document.append('<br><input type="checkbox" name="scores" id="i" value="i">'+ i);
}

Примечание. Не используйте document.write(), если вы не хотите перезаписывать все, что уже есть на странице.

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