こんにちは!
今回は「GASでgoogle.script.runが動作しない または 引数を取得できないときの原因と対策」についてお伝えしたいと思います。
最近、GASでファイルアップロード機能を作ろうとしたのですが、google.script.run.関数(引数1, 引数2...)
が機能せずにハマってしまいました。。
同じ原因でハマっている方がいらっしゃるかと思って記事にしました。
(※他の原因の場合もあります)
google.script.runが動作しない、引数を取得できないときの原因
先に結論から...
原因は呼び出す関数の引数にDOMを渡していたからでした。
<input id="textData" type="text">
<script>
const textDom = document.getElementById("textData");
google.script.run.upload(textDom); // 関数が呼ばれない上、エラーも表示されない
</script>
上記コードはinputタグのDOMを取得し、google.script.run.upload(textDom)でサーバー側に渡しています。
引数でDOMごと渡していますが、サーバー側の関数は呼び出されませんでした。
「引数にオブジェクトを渡したのが原因?」と思って、以下のコードを試しましたが正常に動きました。
<script>
google.script.run.upload({text: 'foge'}); // 正常に動いた!
</script>
対策:DOMから必要な値を取り出し、引数に渡すようにする
DOMから必要な値を取り出し、引数に渡すことで解決しました。
(根本原因がわからず...)
上記コードの修正verになります。
<input id="textData" type="text">
<script>
const textDom = document.getElementById("textData");
const textValue = textDom.value;
google.script.run.upload(textValue); // 正常に動いた&引数も取得できた!
</script>
以上、お疲れさまでした〜🍵