質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

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

Google Apps Script

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

Q&A

0回答

246閲覧

スプレッドシートで複数選択できるプルダウンを列全体に作成したい

sshotarr

総合スコア0

Google スプレッドシート

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

Google Apps Script

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

0グッド

1クリップ

投稿2023/05/31 06:41

編集2023/05/31 08:14

実現したいこと

スプレッドシートで一列すべてのセルに
複数選択可能なプルダウンリストを作成したい

https://teratail.com/questions/iuga34q6week3r
https://qiita.com/Qnoir/items/2ebaa367ed9a75d4ff7b

を参考にしたのですが
スプレッドシートへ書き込むことができていないように見受けられます

前提

html

1<!DOCTYPE html> 2<html> 3 4<head> 5 <base target="_top"> 6</head> 7<style> 8 .box select { 9 width: 100px; 10 } 11</style> 12 13<body> 14 <div class="box"> 15 <select id="items" multiple> 16 <option value="1">1</option> 17 <option value="2">2</option> 18 <option value="3">3</option> 19 <option value="4">4</option> 20 <option value="5">5</option> 21 </select> 22 </div> 23 <div> 24 <button id="inputdata">入カ</button> 25 </div> 26 <script> 27 document.getElementById("inputdata").addEventListener("click", submit); 28 function submit() { 29 const items = document.getElementById('items'); 30 const selectedItems = Array.from(items, (item) => [item.selected, item.value] ).filter(e => e[0]).map(e => e[1]); 31 console.log(selectedItems) 32 google.script.run.inputValues(selectedItems.join(','),<?= row ?>); 33 google.script.host.close(); 34 } 35 </script> 36</body> 37 38</html>

下から六行目の 末尾

<?= row ?>)

がおかしいのかと思い数字等に変更をしてみたのですが
スプレッドシートへの反映ができません

該当のソースコード

code.gs

1function showDialog(e){ 2 // ⎾A列以外またはCheckBoxがオフ⏌ならば何もしない。 3 if (e.range.columnStart !== 1 || e.value === 'FALSE') return; 4 // HTMLを組み立て. 5 let html = HtmlService.createTemplateFromFile('index'); 6 html.row = e.range.rowStart; 7 html.col = e.range.columnStart; 8 html = html.evaluate().setWidth(120).setHeight(140); 9 SpreadsheetApp.getUi().showModalDialog(html, '入カ値を選択'); 10} 11 12function inputValues(items, row){ 13 SpreadsheetApp.getActive().getActiveSheet().getRange('C' + row).setValue(items); 14}

index.html

1<!DOCTYPE html> 2<html> 3 4<head> 5 <base target="_top"> 6</head> 7<style> 8 .box select { 9 width: 100px; 10 } 11</style> 12 13<body> 14 <div class="box"> 15 <select id="items" multiple> 16 <option value="1">1</option> 17 <option value="2">2</option> 18 <option value="3">3</option> 19 <option value="4">4</option> 20 <option value="5">5</option> 21 </select> 22 </div> 23 <div> 24 <button id="inputdata">入カ</button> 25 </div> 26 <script> 27 document.getElementById("inputdata").addEventListener("click", submit); 28 function submit() { 29 const items = document.getElementById('items'); 30 const selectedItems = Array.from(items, (item) => [item.selected, item.value] ).filter(e => e[0]).map(e => e[1]); 31 console.log(selectedItems) 32 google.script.run.inputValues(selectedItems.join(','),<?= row ?>); 33 google.script.host.close(); 34 } 35 </script> 36</body> 37 38</html>

試したこと

rowの部分がうまく働いていないのかと思い数字に変更してみたりしました。
お力添えをいただけると幸いです

検証ツールのエラー

検証ツールで見るとこんなエラーが出ております

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

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

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

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

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

YAmaGNZ

2023/05/31 07:31

提示されたコードで試してみましたが、ダイアログが表示され、選んだ値がC列に書かれました。 現状はどのような動作になっているのでしょうか? A列のチェックボックスをONにしても値を選択するダイアログが表示されないのでしょうか? それとも表示されたダイアログで値を選択しても該当行のC列に値が表示されないのでしょうか?
sshotarr

2023/05/31 07:46

コメントありがとうございます A列のチェックボックスをONにしても値を選択するダイアログが表示されないのでしょうか? ↑ダイアログは表示され選択することは可能です それとも表示されたダイアログで値を選択しても該当行のC列に値が表示されないのでしょうか? ↑C列に値が表示されず困っています...
YAmaGNZ

2023/05/31 07:55

inputValuesに Logger.log(row); とログを出力するようにして エディタの実行数を確認するところでinputValuesのログを確認してみてはどうでしょうか?
YAmaGNZ

2023/05/31 08:03

もしくは新規にスプレッドシート作って最初からやってみたらどうなるでしょうか?
sshotarr

2023/05/31 08:13

inputValuesに Logger.log(row); とログを出力するようにして エディタの実行数を確認するところでinputValuesのログを確認してみてはどうでしょうか? こちら試したところ,特に何かが出てくる等はありませんでした。 もしくは新規にスプレッドシート作って最初からやってみたらどうなるでしょうか? こちらも試したのですが変化なく...といった具合でして 画像を添付したのですが 検証ツールでみたところエラー等々たくさん出ていて何か関係ありますでしょうか
YAmaGNZ

2023/05/31 09:10

index.htmlを <!DOCTYPE html> <html> <body> <script> google.script.run.inputValues('1,2',1); google.script.host.close(); </script> </body> </html> としてみて、1行目のC列に値が入りますかね?
sshotarr

2023/05/31 09:15

index.htmlを ご指示の通りに 全部書き換えてみて チェックボックスをつけてみましたが 1行目のC列に値は入りませんでした
YAmaGNZ

2023/05/31 10:11

V8ランタイムを無効にしたらどうなりますか?
sshotarr

2023/05/31 10:17

構文エラー: Missing ; before statement. 行: 5 ファイル: コード とでてしまいます...
YAmaGNZ

2023/05/31 10:34

V8ランタイム無効にするとletが使えないのでvarに変えてください
YAmaGNZ

2023/05/31 10:44

確認なのですがエディタの実行数のところの実行結果には Head inputValues 不明 2023/05/31 18:08:04 0.889 秒 完了 Head showDialog トリガー 2023/05/31 18:08:03 0.584 秒 完了 こんな感じでinputValuesが実行された結果がありますか? また、表示されたダイアログで「入力」ボタンを押したらダイアログは消えていますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問