はじめに
こんにちは、swim-loverです。初心者向けのGoogle Apps Script (GAS) Google Forms の記事です。第1回は、スプレッドシートの内容を読み出して簡単なGoogleフォームを作成するスクリプトファイルの記述方法について説明しています。ここ数年、イベントの案内やアンケートで、Google Formsを使うことが多くなってきました。(実はもっと前から使われていて私が知らなかっただけかな?)私も、イベント企画で数年前よりGoogle Formsを使ってますが、イベントの度にアンケートフォームの編集作業が面倒になっていました。自動的にアンケートフォームが生成できるやり方がないか調べてみると、Googleスプレットシートから、アンケートフォームが生成できることを初めて知りました。Google Apps Script(GAS)というスクリプト言語の存在も初めて知りました。この投稿では、Googleスプレッドシートの準備から簡単なアンケートフォームを作成するまでを紹介します。
Googleスプレッドシートの準備
今回はマラソン大会の企画を例にします。以下のようなスプレッドシートシートを準備します。
スクリプトエディタの準備
スプレッドシートのツールメニューから、「スクリプトエディタ」を選択します。
すると、以下のように空のスクリプトエディタが起動します。
GAS code ‘createEventForm’
スクリプトエディタの準備ができたら、スクリプトを書いていきます。
function createEventForm(){
const MAX_ENTRY=3; //max entry num,エントリー可能な種目数
const ss = SpreadsheetApp.getActiveSpreadsheet();//get active spread spped,現在開いているスプレッドシートを取得
const values = ss.getSheetByName('イベント内容').getDataRange().getValues();
const dataValues = ss.getSheetByName('種目リスト').getDataRange().getValues();
const formTitle = values[0][1]; //read cell[0][1],title,タイトル
const formDescription = values[1][1]; //read cell[1][1],event content,内容
const form = FormApp.create(formTitle);// create new form
form.setDescription(formDescription);//set form description、フォームの説明欄
}
以下にスクリプトの内容を順番に説明していきます。
GAS ‘SpreadsheetApp Class’
- SpreadsheetApp
- クラスになります。このクラスは、SpreadSheet サービスを提供しています。クラスという呼び方は、ITエンジニア、プログラマー以外はいきなりハードルが上がるかもしれません。簡単に言うと”色々な機能が使えるプログラムの集まり”なのですが、実際に使ってみて慣れるのが一番近道だと思います。
- ss=SpreadsheetApp.getActiveSpreadsheet()
- 現在開いているスプレッドシートを取得します。
const ss = SpreadsheetApp.getActiveSpreadsheet();//get active spread spped,現在開いているスプレッドシートを取得
GAS ‘SpreadSheetの読み出し’
- ss.getSheetByName(‘イベント内容’).getDataRange().getValues()
- ‘イベント内容’タブのデータ内容を読み出します。すこし、専門的になりますが、getDataRange()は、Range型データを返します。Range型はClass名で、このクラスのgetValues()メソッドで実際のデータを取得しています。
- getDataRange().getValues()というように連続して処理を記述できることを初めて知りました。
- formTitle = values[0][1]
- getValues()で取得したデータのなかで、タイトル名は、配列value[0][1]に入っています。この値(文字列)をformTitleに入れています。
- formDescription = values[1][1]
- イベントの説明は、配列value[1][1]に入っています。この値(文字列)をformDescriptionに入れています。
const values = ss.getSheetByName('イベント内容').getDataRange().getValues();
const dataValues = ss.getSheetByName('種目リスト').getDataRange().getValues();
const formTitle = values[0][1]; //read cell[0][1],title,タイトル
const formDescription = values[1][1]; //read cell[1][1],event content,内容
GAS ‘フォームの新規作成’
- FormApp.create(formTitle)
- formTitleで指定したタイトル名で新規のフォームを作成します。
- form.setDescription(formDescription)
- フォームの説明欄の設定を行います。
const form = FormApp.create(formTitle);// create new form
form.setDescription(formDescription);//set form description、フォームの説明欄
スクリプトの実行
スクリプトの記述が完成したら、スクリプトを実行しましょう。スクリプトエディタの▶のボタンを押すとスクリプトが実行されます。
フォームの確認
スクリプトが正しく記述できていれば、マイドライブ以下に、’2022年第10回 多摩川河川敷マラソン大会エントリーフォーム’というフォームが作成されています。
まとめ
初回は、スプレッドシートの準備からスクリプトの記述、簡単なフォームの作成までを説明しました。いかがでしたか?次回はフォームの内容を充実させて実際に使えるフォームにしたいと思います。
組み込み系ソフトエンジニアをしています。これまでフロントエンド技術は避けてきましたが、食わず嫌いをやめて、勉強を始めました。
趣味は、水泳、ロードバイク、ランニング、登山です。
組み込み系技術ネタ、勉強したフロントエンド技術、たまに趣味の運動について発信していきます。
どうぞよろしくお願いします。
コメント