suchen

Heim  >  Fragen und Antworten  >  Hauptteil

google.script.run.function() gibt null zurück

<p>Auf einer Google-Tabelle habe ich ein Seitenleistenformular, mit dem der Nutzer Informationen in einer anderen Tabelle hinzufügen kann. Ich muss für jede Zeile eine ID angeben, damit beim Hinzufügen einer ID durch den Benutzer eine neue ID generiert wird. </p> <p>Beispiel: Das Seitenleistenformular verfügt über zwei Eingaben: Standardzahl (int) und Standard (text). Wenn der Benutzer diese Eingaben hinzufügt, möchte ich sie in ein Arbeitsblatt mit drei Spalten einfügen: A = ID, B = Standardnummer und C = Standard. Um die IDs zu generieren, habe ich auf der Serverseite eine creeID()-Funktion erstellt (diese Funktion prüft die letzte ID im Blatt und generiert die nächste ID, hat beim Testen gut funktioniert) und wenn der Benutzer eine Zeile hinzufügt (Schaltfläche „ajouter“) um eine Registerkarte mit diesem Format zu erhalten: <code>[ID, Kriteriennummer, Kriterien]</code> und verschieben Sie diese Registerkarte mit <code>appendRow()</code></code> ; <p>Ich dachte, ich könnte ein Google-Skript verwenden, um mit <code>.withSuccessHandler()</code> zu arbeiten. Wie es hier steht, habe ich ein paar Dinge ausprobiert, basierend auf der Hilfe von @Tanaike und diesem Video.</p> <p>一切似乎都工作正常,除了 <code>google.script.run.withSuccessHandler(data => {alert("preuve ajoutée")}).creeID()</code> 返回 <code>null</code ></p> <p>这是我的 html-Datei:</p> <pre class="brush:php;toolbar:false;"><!DOCTYPE html> <html> <Kopf> <base target="_top"> <Stil> ... </style> </head> <Körper> <p>Anzeiger</p> <Eingabetyp="Nummer" name="Anzeiger" id="indic" value="" min = "1" max = "32"> <p>Preuve</p> <Eingabetyp="Text" name="preuve" id="preuve"> <br> <Eingabetyp="Schaltfläche" value="Ajouter" onclick="ajouter()"> <span class="annuler" onclick="google.script.host.close()">Annuler</span> <script> Funktion ajouter() { const inputs = document.querySelectorAll('#indic, #preuve'); let tab = [google.script.run.withSuccessHandler(data => {alert("preuve ajoutée")}).creeID()]; // Récupération des valeurs for (konstante Eingabe der Eingaben) { tab.push(input.value); } // Si tous les champs sont vides if (tab.join('') == '') { Alert('Die Formel ist da!'); zurückkehren; } // Vider les champs inputs.forEach(input => input.value = ''); // Envoi dans la feuille google.script.run.ajouterLigne(tab); } </script> </body> </html></pre> <p>und JavaScript-Code:</p> <pre class="brush:php;toolbar:false;">function ajouterLigne(tab) { const PREUVES = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PREUVES"); console.log(tab) PREUVES.appendRow(tab); } Funktion creeID() { const SHEET = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PREUVES"); let lastRow = SHEET.getLastRow(); let lastIdRange = SHEET.getRange(lastRow, 1); let lastId = lastIdRange.getValue(); let newId; if (lastId == "ID") { neueId = 1; } anders { newId = lastId + 1; }; return(newId) }</pre></p>
P粉366946380P粉366946380479 Tage vor579

Antworte allen(1)Ich werde antworten

  • P粉930448030

    P粉9304480302023-09-06 09:30:00

    对于您的脚本,google.script.run.creeID() 不返回任何值。我认为这就是您当前问题的原因。从也许我应该像这里所说的那样使用.withSuccessHandler(),但我不知道如何使用。,如下使用withSuccessHandler()怎么样?

    在这种情况下,请按如下方式修改 Javascript 的 ajouter()

    修改后的脚本:

    function ajouter() {
      const inputs = document.querySelectorAll('input[type="text"]');
      google.script.run.withSuccessHandler(tab => {
        tab = [tab];
        for (const input of inputs) {
          tab.push(input.value);
        }
        if (tab.join('') == '') {
          alert('Le formulaire est vide !');
          return;
        }
        inputs.forEach(input => input.value = '');
        google.script.run.ajouterLigne(tab);
      }).creeID();
    }
    
    • 在此修改中,当单击按钮时,将检索 tab 的值,并将 tab 的值和输入的值附加到电子表格中。

    参考:

    Antwort
    0
  • StornierenAntwort