google.script.run.function() renvoie null
P粉366946380
2023-09-05 13:53:44
<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>
Et
google.script.run.creeID()
不返回任何值。我认为这就是您当前问题的原因。从也许我应该像这里所说的那样使用.withSuccessHandler(),但我不知道如何使用。
,如下使用withSuccessHandler()
votre scénario ?Dans ce cas, modifiez le Javascript
ajouter()
comme suit.Script modifié :
tab
的值,并将tab
est récupérée et la valeur saisie est ajoutée à la feuille de calcul. 李>Référence :