google.script.run.function() mengembalikan null
P粉366946380
2023-09-05 13:53:44
<p>Pada Helaian Google, saya mempunyai borang bar sisi yang membenarkan pengguna menambah maklumat dalam helaian lain.
Saya perlu menyediakan ID untuk setiap baris supaya apabila pengguna menambah ID, ID baharu dijana. </p>
<p>Contoh:
Borang sidebar mempunyai dua input: nombor standard (int) dan standard (teks). Apabila pengguna menambah input ini, saya ingin memasukkannya ke dalam lembaran kerja dengan 3 lajur: A = ID, B = Nombor Standard dan C = Standard.
Untuk menjana ID, saya mencipta fungsi creeID() pada bahagian pelayan (fungsi ini menyemak ID terakhir dalam helaian dan menjana ID seterusnya, berfungsi dengan baik semasa menguji) dan apabila pengguna menambah baris (butang "ajouter") untuk mendapatkan tab dengan format ini <kod>[ID, nombor kriteria, kriteria]</kod> dan tolak tab itu menggunakan <kod>appendRow()</kod></kod> ;
<p>Saya fikir saya boleh menggunakan skrip google untuk menjalankan dengan <code>.withSuccessHandler()</code> seperti yang dinyatakan di sini, saya mencuba beberapa perkara berdasarkan bantuan @Tanaike dan video ini.</p>
<p>一切似乎都工作正常,除了 <code>google.script.run.withSuccessHandler(data => {alert("preuve ajoutée")}).creeID()</code< 返回 <kod>null</kod ></p>
<p>这是我的 html 文件:</p>
<pre class="brush:php;toolbar:false;"><!DOCTYPE html>
<html>
<kepala>
<sasaran asas="_atas">
<gaya>
...
</style>
</head>
<badan>
<p>Penunjuk</p>
<jenis input="nombor" name="indicateur" id="indic" nilai="" min = "1" maks = "32">
<p>Preuve</p>
<jenis input="teks" name="preuve" id="preuve">
<br>
<jenis input="butang" value="Ajouter" onclick="ajouter()">
<span class="annuler" onclick="google.script.host.close()">Annuler</span>
<skrip>
function ajouter() {
input const = document.querySelectorAll('#indic, #preuve');
let tab = [google.script.run.withSuccessHandler(data => {alert("preuve ajoutée")}).creeID()];
// Récupération des valeurs
untuk (input const input) {
tab.push(input.value);
}
// Si tous les champs sont vides
jika (tab.join('') == '') {
alert('Le formulaire est vide !');
kembali;
}
// Vider les champs
inputs.forEach(input => input.value = '');
// Envoi dans la feuille
google.script.run.ajouterLigne(tab);
}
</skrip>
</badan>
</html></pre>
<p>和 JavaScript 代码:</p>
<pre class="brush:php;toolbar:false;">function ajouterLigne(tab) {
const PREUVES = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PREUVES");
console.log(tab)
PREUVES.appendRow(tab);
}
fungsi creeID() {
const SHEET = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PREUVES");
biarkan lastRow = SHEET.getLastRow();
biarkan lastIdRange = SHEET.getRange(lastRow, 1);
biarkan lastId = lastIdRange.getValue();
biarkan newId;
if (lastId == "ID") {
newId = 1;
} lain {
newId = lastId + 1;
};
kembali(newId)
}</pre></p>
Bagaimana pula dengan
google.script.run.creeID()
不返回任何值。我认为这就是您当前问题的原因。从也许我应该像这里所说的那样使用.withSuccessHandler(),但我不知道如何使用。
,如下使用withSuccessHandler()
skrip anda?Dalam kes ini, ubah suai Javascript
ajouter()
seperti berikut.Skrip diubah suai:
tab
的值,并将tab
diambil dan nilai yang dimasukkan dilampirkan pada hamparan. 李>Rujukan: