google.script.run.function() は null を返します
P粉366946380
2023-09-05 13:53:44
<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>
あなたのスクリプトでは、
google.script.run.creeID()
は値を返しません。これが現在の問題の原因だと思います。から おそらく、ここで述べているように .withSuccessHandler() を使用する必要がありますが、方法がわかりません。
では、次のようにwithSuccessHandler()
を使用してみてはいかがでしょうか。この場合、JavaScript の
ajouter()
を次のように変更します。変更されたスクリプト:
リーリーtab
の値が取得され、tab
の値と入力された値がスプレッドシートに追加されます。 李>withSuccessHandler(関数)-