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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

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

Q&A

解決済

1回答

3058閲覧

GAS(Google Apps Script)を使って、 スプレッドシートの指定列の単語を、Googleフォームの質問の選択肢(チェックボックス)に表示させたい

yuuunn

総合スコア7

Google Apps Script

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

0グッド

0クリップ

投稿2020/02/26 11:49

前提・実現したいこと

GAS(Google Apps Script)を使って、
スプレッドシートの指定列の単語を、Googleフォームの質問「参加希望日程」の選択肢(チェックボックス)に表示させたいです。

今回は、あるシートのAB列の2行目から最終行までと、AC列の2行目・3行目を選択肢に加えたいです。

スプレッドシートを更新するとフォームの選択肢も更新されるように、トリガーを使ってやるつもりなのです。

以下のプログラムを実行したのですが、うまく動作しませんでした。

function overwriteList() { var ss = SpreadsheetApp.openById('△△△'); var sh = ss.getSheetByName("リスト"); // AB行の2行目からコンテンツをもつ最後の行までの値を配列で取得する var colAB = sheet.getRange(2,28,sheet.getLastRow() - 1).getValues(); // AC行の2行目から3行目までの値を配列で取得する var colAC = sheet.getRange(2,29,3,2).getValues(); } /** // Googleフォームのチェックボックス内の値を上書きする // **/ var form = FormApp.openById('〇〇〇'); // 質問項目がチェックボックスのもののみ取得 var items = form.getItems(FormApp.ItemType.Checkbox); items.forEach(function(item){ // 質問項目が「参加希望日程」を含むものに対して、スプレッドシートの内容を反映する if(item.getTitle().match(/参加希望日程.*$/)){ var CheckboxItemQuestion = item.asCheckboxItem(); var choices = []; colA.forEach(function(name){ if(name != ""){ choices.push(CheckboxItemQuestion.createChoice(name)); } }); // チェックボックスの選択肢を上書きする CheckboxItemQuestion.setChoices(choices); } }); }

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

GASやプログラミングなどの知識が浅いため、上記のプログラムが間違っているのだと思います。
以下のサイトを参考にしました。
https://qiita.com/kobaboy/items/610263087d9c85d8458e

ご教示いただけますと幸いです。

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

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

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

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

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

papinianus

2020/02/26 15:17

「実行した」とのことですが、保存すらできません。構文にエラーがあるからです。保存しようとしたら下記のエラーが出ます。 > SyntaxError: Unexpected token }(行 38、ファイル「code.gs」) なぜ理解もしていないコードをここにはるときに削るのでしょうか。削った箇所に問題がないことを保証できると言うなら知識が浅いなどというエクスキューズは通りません。 もし削っていないとしたらなぜ実行していないものを実行したという虚偽をまぜるのでしょうか。 そうした、理解のないままの省略または虚偽は、回答者の意欲を削ぐ効果しかありません。
guest

回答1

0

ベストアンサー

javascript

1const overwriteList = () => { 2 const vals = SpreadsheetApp.getActive().getSheetByName("リスト").getDataRange().getValues().slice(1); 3 const colAB = vals.map(e=>e[27]).filter(e=>e !== ""); 4 const colAC = vals.map(e=>e[28]).slice(0,2); 5 const choices = colAB.concat(colAC); 6 FormApp.openById("id").getItems(FormApp.ItemType.MULTIPLE_CHOICE).forEach(i=>{ 7 if(i.getTitle().indexOf("参加希望日程") === -1) return; 8 i.asMultipleChoiceItem().setChoiceValues(choices); 9 }); 10}

投稿2020/02/26 15:37

編集2020/03/04 15:01
papinianus

総合スコア12705

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

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

yuuunn

2020/02/26 16:58

ご回答ありがとうございます。 上記のお叱りもおっしゃる通りだと思います。不快な思いをさせてしまい、申し訳ありませんでした。 ご回答いただいたものを試したのですが、 「構文エラー。(行 1、ファイル「コード」)」と出てしまいました。 もし原因がおわかりになればご教示いただけますと幸いです。
yuuunn

2020/02/26 18:09

できました!! ありがとうございます!
yuuunn

2020/02/27 02:58

続けざまに申し訳ありません。最後に1点だけお伺いしたく・・・ 上記はチェックボックスのときでしたが、もしラジオボタンのときは、 checkboxをmultiplechoiceに置換すればよいのでしょうか。
papinianus

2020/03/04 15:01

そうですが、2箇所ありEnumとメソッドでは直しかたが全く違うので、回答を修正しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問