google.script.run.function() gibt null zurück
P粉366946380
2023-09-05 13:53:44
<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>
对于您的脚本,
google.script.run.creeID()
不返回任何值。我认为这就是您当前问题的原因。从也许我应该像这里所说的那样使用.withSuccessHandler(),但我不知道如何使用。
,如下使用withSuccessHandler()
怎么样?在这种情况下,请按如下方式修改 Javascript 的
ajouter()
。修改后的脚本:
tab
的值,并将tab
的值和输入的值附加到电子表格中。李>参考: