Je travaille actuellement avec le tutoriel suivant pour afficher les données de la feuille Google dans la barre latérale : https://yagisanatode.com/2018/02/12/how-to- obtenir-quelque-chose-de-google-sheets-and-display-it-in-the-sidebar-in-google-apps-script/#more-219

Cependant, je voudrais ajouter une boucle "for" dans mon fichier html pour afficher un certain nombre de cases à cocher (voir le code ci-dessous). En fin de compte, je souhaite remplacer le nombre "16" par la valeur "rangeResult" de ma feuille de calcul. Pouvez-vous proposer des suggestions sur la façon de procéder?

Code.gs - fonction

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

Fichier 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>
    <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>

Merci de votre aide!

0
Tod Hessong 17 mars 2019 à 04:02

2 réponses

Meilleure réponse

Merci pour vos suggestions! Ci-dessous ma solution. (J'ai modifié les noms de certaines des variables pour les adapter à mon projet.)

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
Tod Hessong 19 mars 2019 à 01:34

L'appel de fonction -

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

Signifie que si la fonction numEarlyRelease() renvoie une valeur, dans ce cas numValues, elle est disponible comme argument de la fonction addRange(). addRange() prend un paramètre rangeStartEnd, il aura donc la valeur numValues. Vous pouvez l'utiliser comme bon vous semble. Par exemple, s'il s'agit d'un nombre -

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

Remarque : N'utilisez pas document.write() sauf si vous souhaitez écraser tout ce qui se trouve déjà dans la page.

0
ra89fi 17 mars 2019 à 08:34