検索

ホームページ  >  に質問  >  本文

google.script.run.function() は null を返します

<p>Google スプレッドシートに、ユーザーが別のシートに情報を追加できるサイドバー フォームがあります。 ユーザーが ID を追加すると新しい ID が生成されるように、各行に ID を指定する必要があります。 </p> <p>例: サイドバー フォームには、標準数値 (int) と標準 (テキスト) の 2 つの入力があります。ユーザーがこれらの入力を追加するとき、A = ID、B = 標準番号、C = 標準の 3 つの列を持つワークシートに入力したいと考えています。 ID を生成するために、サーバー側で creeID() 関数を作成しました (この関数はシート内の最後の ID をチェックし、次の ID を生成します。テスト時にはうまく機能しました)。ユーザーが行を追加したとき (「ajouter」ボタン)この形式のタブを取得するには、<code>[ID、条件番号、条件]</code>、<code>appendRow()</code></code> を使用してそのタブをワークシート p> にプッシュします。 ; <p>ここで述べているように、Google スクリプトを使用して <code>.withSuccessHandler()</code> で実行できると思い、@Tanaike のヘルプとこのビデオに基づいていくつかのことを試しました。</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> <頭> <ベースターゲット="_top"> <スタイル> ... </スタイル> </head> <本体> <p>インジケーター</p> <入力タイプ=「数値」名前=「指標」 id="インド語"値=""最小値 = "1"最大 = "32"> <p>プルーヴェ</p> <入力タイプ="テキスト" name=「プルーヴェ」 id="プルーヴェ"> <br> <入力タイプ=「ボタン」値= "アジョター" onclick="ajouter()"> <スパンクラス="アニュラー" onclick="google.script.host.close()">アヌラー</span> <スクリプト> 関数 ajouter() { const inputs = document.querySelectorAll('#indic, #preuve'); let tab = [google.script.run.withSuccessHandler(data => {alert("preuve ajoutée")}).creeID()]; // 価値の回復 for (入力の定数入力) { tab.push(input.value); } // Si tous les Champs ソント ビデオ if (tab.join('') == '') { alert('公式を見るにはビデオをご覧ください!'); 戻る; } // ヴィダー・レ・シャン inputs.forEach(input => input.value = ''); // アンヴォイ・ダン・ラ・フィーユ google.script.run.ajouterLigne(タブ); } </スクリプト> </ボディ> </html></pre> <p>和 JavaScript 代コード:</p> <pre class="brush:php;toolbar:false;">function ajouterLigne(tab) { const PREUVES = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PREUVES"); コンソール.ログ(タブ) PREUVES.appendRow(タブ); } 関数creeID() { const SHEET = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PREUVES"); let lastRow = SHEET.getLastRow(); let lastIdRange = SHEET.getRange(lastRow, 1); lastId = lastIdRange.getValue(); にします。 newId を許可します。 if (lastId == "ID") { 新しいID = 1; } それ以外 { 新しい ID = 最後の ID 1; }; 戻り値(新しいID) }</pre></p>
P粉366946380P粉366946380479日前580

全員に返信(1)返信します

  • P粉930448030

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

    あなたのスクリプトでは、google.script.run.creeID() は値を返しません。これが現在の問題の原因だと思います。 から おそらく、ここで述べているように .withSuccessHandler() を使用する必要がありますが、方法がわかりません。 では、次のように withSuccessHandler() を使用してみてはいかがでしょうか。

    この場合、JavaScript の ajouter() を次のように変更します。

    変更されたスクリプト:

    リーリー
    • 今回の変更では、ボタンをクリックすると、tabの値が取得され、tabの値と入力された値がスプレッドシートに追加されます。
    ###参照する:###

      withSuccessHandler(関数)
    • 返事
      0
  • キャンセル返事