google.script.run.function() renvoie null
P粉366946380
P粉366946380 2023-09-05 13:53:44
0
1
569
<p>Sur une feuille Google, j'ai un formulaire de barre latérale qui permet à l'utilisateur d'ajouter des informations dans une autre feuille. Je dois fournir un identifiant pour chaque ligne afin que lorsque l'utilisateur ajoute un identifiant, un nouvel identifiant soit généré. </p> <p>Exemple : Le formulaire de la barre latérale comporte deux entrées : numéro standard (int) et standard (texte). Lorsque l'utilisateur ajoute ces entrées, je souhaite les placer dans une feuille de calcul avec 3 colonnes : A = ID, B = Numéro standard et C = Standard. Pour générer les ID, j'ai créé une fonction creeID() côté serveur (cette fonction vérifie le dernier ID de la feuille et génère l'ID suivant, a bien fonctionné lors des tests) et lorsque l'utilisateur ajoute une ligne (bouton "ajouter") pour obtenir un onglet avec ce format <code>[ID, numéro de critère, critères]</code> et poussez cet onglet en utilisant <code>appendRow()</code></code> ; <p>Je pensais pouvoir utiliser un script Google pour exécuter avec <code>.withSuccessHandler()</code> comme indiqué ici, j'ai essayé quelques choses basées sur l'aide de @Tanaike et cette vidéo.</p> <p>一切似乎都工作正常,除了 <code>google.script.run.withSuccessHandler(data => {alert("preuve ajoutée")}).creeID()</code> 返回 <code>null</code ></p> <p>这是我的 html 文件:</p> <pre class="brush:php;toolbar:false;"><!DOCTYPE html> <html> <tête> <base target="_top"> <style> ... </style> ≪/tête> <corps> <p>Indicateur</p> <type d'entrée="numéro" name="indicateur" id="indicateur" valeur="" min = "1" max = "32"> <p>Preuve</p> <type d'entrée="texte" name="preuve" id="preuve"> <br> <type d'entrée="bouton" value="Ajouter" onclick="ajouter()"> <span class="annuler" onclick="google.script.host.close()">Annuler</span> <script> function ajouter() { const inputs = document.querySelectorAll('#indic, #preuve'); let tab = [google.script.run.withSuccessHandler(data => {alert("preuve ajoutée")}).creeID()]; // Récupération des valeurs pour (entrée const des entrées) { tab.push(input.value); } // Si tous les champs sont vides if (tab.join('') == '') { alert('Le formulaire est vide !'); retour; } // Vider les champs inputs.forEach(input => input.value = ''); // Envoi dans la feuille google.script.run.ajouterLigne(tab); } </script> </corps> </html></pre> <p> et JavaScript 代码:</p> <pre class="brush:php;toolbar:false;">function ajouterLigne(tab) { const PREUVES = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PREUVES"); console.log(onglet) PREUVES.appendRow(onglet); } fonction creeID() { const SHEET = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PREUVES"); let lastRow = SHEET.getLastRow(); laissez lastIdRange = SHEET.getRange(lastRow, 1); let lastId = lastIdRange.getValue(); laissez newId ; if (lastId == "ID") { nouvelId = 1 ; } autre { newId = lastId + 1 ; } ; retour (nouvel ID) }</pre></p>
P粉366946380
P粉366946380

répondre à tous(1)
P粉930448030

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

Dans ce cas, modifiez le Javascript ajouter() comme suit.

Script modifié :

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();
}
  • Dans cette modification, lorsque vous cliquez sur le bouton, la valeur de tab 的值,并将 tab est récupérée et la valeur saisie est ajoutée à la feuille de calcul. 李>

Référence :

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal