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

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

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

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

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

Q&A

1回答

6112閲覧

GASによるGoogleフォームの内容の修正方法(特に選択肢の変更)

Test_abc

総合スコア4

Google スプレッドシート

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

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

1グッド

1クリップ

投稿2020/03/14 06:08

GASによるGoogleフォームの内容(選択肢)の修正方法をご教示下さい

以下のサイトに掲載された方法でGASによりGoogleフォームを作成する方法を覚えました。
https://tonari-it.com/gas-form-generate-choices/

次のステップとして、フォームの選択肢(リンクの例でいえば都道府県名)をスプレッドシートの内容を基に増減させる方法を模索しています。

リンクにあったプログラムのとおりに作成したプログラム(結果的にクリップ&ペースト)を貼らせて頂きます
このプログラムのままだと作動させる都度「新規作成」してしまうので、選択肢(都道府県名)を自動的にスプレッドシートと連携して反映させるプログラムを作れたらと思っています

現在のアイディアとして、このプログラムを作動させる度に「新規作成(保存)」ではなく、「上書き保存」(GoogleフォームのID「"abcdefghijklmnopqrstu"」)するプログラムを作成することができれば、同じ効果が得られのではないかと、考えておりますが、
その方法も皆目見当がつかずにおります
この辺のところをご教示頂けると幸いです

どうぞ、よろしくお願いします

【以下、関連するサイトから見つけて応用したいプログラム】
function createEventForm(){
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet()
var values = spreadsheet.getSheetByName('イベント概要').getDataRange().getValues();

var dataValues = spreadsheet.getSheetByName('項目データ').getDataRange().getValues();
var osValues = generateArray(dataValues, 0); //OS
var langValues = generateArray(dataValues, 1); //プログラム言語
var prefValues = generateArray(dataValues, 2); //都道府県

var formTitle = values[0][1]; //タイトル
var formDescription = values[1][1]; //概要

var form = FormApp.create(formTitle);

var FOLDER_ID = PropertiesService.getScriptProperties().getProperty('FOLDER_ID');
var formFile = DriveApp.getFileById(form.getId());
DriveApp.getFolderById(FOLDER_ID).addFile(formFile);
DriveApp.getRootFolder().removeFile(formFile);

form.setDescription(formDescription);
form.addTextItem().setTitle('氏名').setRequired(true);
form.addTextItem().setTitle('会社名');

var validationEmail = FormApp.createTextValidation().requireTextIsEmail().build();
form.addTextItem().setTitle('メールアドレス').setRequired(true).setValidation(validationEmail);

form.addMultipleChoiceItem()
.setTitle('お持ちのPCのOSは?')
.setChoiceValues(osValues)
.setRequired(true);

form.addCheckboxItem()
.setTitle('興味があるプログラム言語は?')
.setChoiceValues(langValues)
.showOtherOption(true);
// .setRequired(true);

form.addListItem()
.setTitle('お住まいの都道府県は?')
.setChoiceValues(prefValues)
.setRequired(true);
}

s.k👍を押しています

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

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

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

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

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

SanQ

2020/03/14 06:26

質問文の中にあるプログラムはMarkdown記法を使用したほうがプログラムが見やすくなり、より早い問題の解決につながるので良いですよ。 使用方法はteratailの方で紹介していますので、調べてみてください。
Test_abc

2020/03/14 07:03 編集

早速のご回答ありがとうございます。 ただ、お恥ずかしながら検索してみたのですが、私の技量ではご教示頂いた内容はほとんど理解できませんでした 基本的な部分で追加説明させていただくと 1 Googleスプレッドシートを用いてデータを蓄積したい(DB的に用いたい) 2 データを収集する手段としてGoogleフォームを利用したい 3 フォームの一部の文を「1」のデータベースの蓄積データを基に変化させたい   (この部分がサンプルで言う所の「都道府県名」に該当) また、私自身エンジニアではなく、総務系の職員です。 このDB(もどき)も従来は、MS-Excelで行なっていたのですが、スマートフォンから直接データ入力できるGoogleドライブの方が効率が良いと考えて研究しているところです 本当であれば、外注すると良いのでしょうが、その様な予算もないので自分で勉強しているところです 以上です これらを踏まえてご教示頂けると幸いです
SanQ

2020/03/14 07:02

Markdown記法とはteratailで質問するさいにプログラムを書く場合、解答者に見やすくなるようにするために使うツールで、この問題を直接解決するツールではありません。 TeratailでのMarkdown記法の使用方法は質問文に「``````」を打ち込むと使用できますよ
Test_abc

2020/03/14 07:13

ご丁寧にありがとうございます 「Markdown記法」については、了解しました。 時間を見て勉強しようと思います それで、私の本来の質問である 「Googleフォームの選択肢をスプレッドシートのデータと連携して最新に保つ方法」 について、効果的なご指導は頂けないでしょうか?
SanQ

2020/03/14 07:24

効果的なご指導はできませんが、あなたの質問がより早く解決できるように意見させていただきました。
guest

回答1

0

javascript

1function createEventForm(){ 2 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet() 3 var values = spreadsheet.getSheetByName('イベント概要').getDataRange().getValues(); 4 5 var dataValues = spreadsheet.getSheetByName('項目データ').getDataRange().getValues(); 6 var osValues = generateArray(dataValues, 0); //OS 7 var langValues = generateArray(dataValues, 1); //プログラム言語 8 var prefValues = generateArray(dataValues, 2); //都道府県 9 10 var formTitle = values[0][1]; //タイトル 11 var formDescription = values[1][1]; //概要 12 13 /* 元のやつ 14 var form = FormApp.create(formTitle); 15 */ 16 // 挿入、はじめ 17 var formId = "abcdefghijklmnopqrstu"; 18 var form = FormApp.openById(formId); 19 form.setTitle(formTitle) 20 // 挿入、終わり 21 22 /* 元のやつ 23 var FOLDER_ID = PropertiesService.getScriptProperties().getProperty('FOLDER_ID'); 24 var formFile = DriveApp.getFileById(form.getId()); 25 DriveApp.getFolderById(FOLDER_ID).addFile(formFile); 26 DriveApp.getRootFolder().removeFile(formFile); 27 */ 28 29 form.setDescription(formDescription); 30 form.addTextItem().setTitle('氏名').setRequired(true); 31 form.addTextItem().setTitle('会社名'); 32 33 var validationEmail = FormApp.createTextValidation().requireTextIsEmail().build(); 34 form.addTextItem().setTitle('メールアドレス').setRequired(true).setValidation(validationEmail); 35 36 form.addMultipleChoiceItem() 37 .setTitle('お持ちのPCのOSは?') 38 .setChoiceValues(osValues) 39 .setRequired(true); 40 41 form.addCheckboxItem() 42 .setTitle('興味があるプログラム言語は?') 43 .setChoiceValues(langValues) 44 .showOtherOption(true); 45// .setRequired(true); 46 47 form.addListItem() 48 .setTitle('お住まいの都道府県は?') 49 .setChoiceValues(prefValues) 50 .setRequired(true); 51}

投稿2020/03/18 14:44

papinianus

総合スコア12705

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問