Rumah  >  Soal Jawab  >  teks badan

google.script.run.function() mengembalikan null

<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>
P粉366946380P粉366946380410 hari yang lalu509

membalas semua(1)saya akan balas

  • P粉930448030

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

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

    Dalam kes ini, ubah suai Javascript ajouter() seperti berikut.

    Skrip diubah suai:

    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();
    }
    
    • Dalam pengubahsuaian ini, apabila butang diklik, nilai tab 的值,并将 tab diambil dan nilai yang dimasukkan dilampirkan pada hamparan.

    Rujukan:

    balas
    0
  • Batalbalas