🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

10459閲覧

GAS HTML|onclick="google.script.run.関数();"で指定した関数が実行されない

WakuYonaha

総合スコア0

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2021/02/02 01:00

編集2021/02/02 01:59

前提・実現したいこと

Google Apps Scriptで、スプレッドシートに、モーダルダイアログを利用した勤務シフトの入力表を作成しようとしています。
HTMLServiceを利用し、モーダルダイアログの入力欄を表示することはできました。
しかし、onclickを利用して、ボタンを押すことでサーバー側の関数を動かしたいのですが、上手く動きません。

発生している問題・エラーメッセージ

<button onclick="google.script.run.get_select_date(this.parentNode);">次へ</button> としていますが、該当のボタンを押しても、指定した関数が実行されません。

該当のソースコード

コード.gs

JavaScript

1//カレンダー入力のための日時選択フォームを表示し、HTMLに渡す関数 2function select_date_form(){ 3 var t_html = HtmlService.createHtmlOutputFromFile('select_date'); 4 SpreadsheetApp.getUi().showModalDialog(t_html, "入力日時選択画面"); 5 6} 7//選択された週の値を取得&表示する関数 8function get_select_date(form){ 9 Logger.log("OK1"); 10 var select_week = form.week; 11 var week_v = select_week.value; 12 Browser.msgBox(week_v); 13} 14

select_date.html

HTML

1<!DOCTYPE html> 2<html> 3 <head> 4 <base target="_top"> 5 </head> 6 <body> 7 <form id="date"> 8 <p>シフト入力する日時を1つ選択して下さい!<br> 9 <input type="radio" name="week" value="1"> 第1週<br> 10 <input type="radio" name="week" value="2"> 第2週<br> 11 <input type="radio" name="week" value="3"> 第3週<br> 12 <input type="radio" name="week" value="4"> 第4週<br> 13 </p> 14 15   <button onclick="google.script.run.get_select_date(this.parentNode);">次へ</button> 16 17 </form> 18 </body> 19</html> 20 21

試したこと

https://tonari-it.com/gas-dialog-withsuccesshandler-close/
上記のサイトに書いてあるコードをコピペして、実行してみましたが、onclickに入れてある関数は動きませんでした。

また、HTMLの方に<script></script>を入れて、そこに関数を書いてみましたが、これも上手く動作しませんでした。

補足情報(FW/ツールのバージョンなど)

<button onclick="alert('クリックされました');">次へ</button>

<button onclick="google.script.host.close();">次へ</button>
の場合は動作しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2021/02/02 08:37

関係あるのかわかりませんが、V8エンジンにこういう問題があるようです。 https://issuetracker.google.com/issues/149980602 Omitting objForm from the parameter prevents the crash (and renders the script useless), so it seems that attempting to pass a form that includes a file to the Google Apps script is what causes the issue. とのこと。
WakuYonaha

2021/02/03 00:17

サイトリンクありがとうございます! 送ってもらったサイトを見ると自分と似たような不具合が起きている人がいるようですね 試しにV8エンジンを無効にして実行してみたのですが、変わりませんでした、、、
guest

回答1

0

var week_v = select_week.value;

が不要で、

Browser.msgBox(select_week);

でよいんじゃないでしょうか?

https://tonari-it.com/gas-dialog-form/

投稿2021/02/03 02:25

編集2021/02/03 02:27
sawa

総合スコア3002

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WakuYonaha

2021/02/03 02:42 編集

回答ありがとうございます。 そこの部分は後々値を値処理するための前段階として、値が受け取れているかを確認したいだけだったので、問題ではないです。 そもそもgoogle.script.runで指定している関数、get_select_date(this.parentNode)が実行されておらず( Logger.log("OK1");も実行されていません)、悩んでいる状況です。
sawa

2021/02/03 02:47

失礼しました。ちなみにこちらで試しに質問文に掲載のコードを丸丸コピペして動かしてもログにOK1でますし、空白ですがメッセージボックス出ます。→ メッセージボックスに週が出ないのが問題かと勘違いして上記回答しました。 動かしてるブラウザとかの問題じゃないでしょうか?
WakuYonaha

2021/02/03 03:30

わざわざ試して頂きありがとうございます! そういった意図だったのですね。承知しました。 ブラウザの問題とのことですが、特に設定を変えたりしていないのですが、具体的にはどう対処していけば良いなどはありますでしょうか?
sawa

2021/02/03 04:15 編集

当方のChromeでは動いたので、もしPC内で幾つかブラウザが入っているなら別ブラウザで試してみると良いかもしれません。既にChromeで動かしているならバージョンを最新版にしてみたり、シークレットでログインして試してみるのも良いです。 一応確認ですが、スプレッドシートのコンテナバインドのスクリプトで動かしてますよね? 新しいスプレッドシートにスクリプトをコピペして検証してみるのも一つです。 ちなみに旧エディタで実行するとv8をオフにしないとエラーでますね。新しいエディタなら問題ないっぽいです。
WakuYonaha

2021/02/03 05:04

・別ブラウザでの実行 ・シークレットモードでの実行 を試してみましたが、特に変化しませんでした。 また、以下についても以前試しましたが、変わりありませんでした。 ・コンテナバインド型での利用 ・新しいスプレッドシートでの実行 ・新エディタ、旧エディタでの実行(V8の有効・無効もどちらも試しました)
sawa

2021/02/03 05:49

お力になれず残念です。 もしかしたら、初歩的な部分での認識の相違があるかもしれないので、出来るだけ情報を開示した方が他の方からも回答が入って解決に近づくかもしれません。 例) 利用しているブラウザやOS、無料アカウントかGoogleWorkPlaceか 等々 その他画面キャプチャ(どういう表示がされるか、実行ログ)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問