みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
GASでGoogleフォームを一発で作成するツールの作成する方法をお伝えしています。
前回の記事はコチラ。
Googleフォームを作成する最も簡単なスクリプトについて解説をしました。
本来なら、フォームの質問を追加する方法をお伝えしたいところですが、その前にやっておいたほうが良いことがあります。
ほら、作成したフォーム、いちいちマイドライブに保存されますでしょ。
マイドライブ散らかり放題になっちゃいます。
ということで、今回はGASで作成したGoogleフォームを指定のフォルダに移動する方法です。
では、行ってみましょう!
前回のおさらい
前回紹介したスクリプトはコチラ。
function createEventForm(){ const ss = SpreadsheetApp.getActiveSpreadsheet() const values = ss.getSheetByName('イベント概要').getDataRange().getValues(); const formTitle = values[0][1]; //タイトル const formDescription = values[1][1]; //概要 const form = FormApp.create(formTitle); form.setDescription(formDescription); }
スプレッドシートの情報(タイトル、概要(=説明))をもとに、Googleフォームを作成するスクリプトです。
ただ、前置きでお伝えした通り、実行するたびにマイドライブに作成されちゃいます。
ちょっとやりづらいですよね。
今回は、作成したそばから別の指定のフォルダに移動する方法をお伝えしますね。
フォーム作成後に指定のフォルダにフォームを移動するスクリプト
では、早速ですがスクリプトを紹介しましょう。
前述のスクリプトの8行目と9行目の間に以下の4行を追加します。
const id = PropertiesService.getScriptProperties().getProperty('FOLDER_ID'); const formFile = DriveApp.getFileById(form.getId()); DriveApp.getFolderById(id).addFile(formFile); DriveApp.getRootFolder().removeFile(formFile);
スクリプトプロパティからフォルダIDを取り出す
解説していきましょう。
まず、1行目はスクリプトプロパティから格納するフォルダのIDを取得して、変数idに格納する部分ですね。
スクリプトプロパティには、事前に「FOLDER_ID」をキーに、格納先のフォルダIDを入力しておいてください。
スクリプトプロパティの入力と取得については以下の2つの記事を
そして、その次の2行目で、作成したフォームをFileオブジェクトとして取得しています。
フォルダIDの取得方法とともに、以下の記事をご覧ください。
フォームのIDを取得する
さて、そのフォームをFileオブジェクトとして取得する際に、getFileByIdメソッドの引数としてフォームIDが必要になります。
フォームIDを取得するには、FormオブジェクトのgetIdメソッドを使います。
この辺の考え方は、スプレッドシートやドキュメントなど、他のファイルと同様ですね。
指定のフォルダにファイルを移動する
そして、その取得したFileオブジェクトをマイフォルダから指定のフォルダに移動しますが、その方法は以下の二段構えで実現します。
- 指定のフォルダにFileオブジェクトを追加する
- マイフォルダからFileオブジェクトを削除する
その部分が、前述のコードの4行目と5行目になります。
ここの流れは、以下の記事で紹介しているスプレッドシートの場合と全く同様ですので、参考にしてください。
まとめ
以上、GASで作成したGoogleフォームを指定のフォルダに移動する方法をお伝えしました。
フォームの作成ツールは定期的に使うものになると思いますから、面倒でも保存するフォルダについては対応していたほうが良いですよね。
動作確認もしやすいですしね。
まとめのスクリプトはコチラです。
function createEventForm(){ const ss = SpreadsheetApp.getActiveSpreadsheet() const values = ss.getSheetByName('イベント概要').getDataRange().getValues(); const formTitle = values[0][1]; //タイトル const formDescription = values[1][1]; //概要 const form = FormApp.create(formTitle); const id = PropertiesService.getScriptProperties().getProperty('FOLDER_ID'); const formFile = DriveApp.getFileById(form.getId()); DriveApp.getFolderById(id).addFile(formFile); DriveApp.getRootFolder().removeFile(formFile); form.setDescription(formDescription); }
次回は、いよいよフォームに質問を追加していきますね。
どうぞお楽しみに!
連載目次:GASでGoogleフォームを一発で作成するツールを作る
イベントの申し込みやアンケートにとっても便利なGoogleフォーム。スプレッドシートの入力内容をもとに、一発でフォームを作成するツールを作っていきます。- GASでGoogleフォームを作成する最も簡単なスクリプト
- GASで作成したGoogleフォームを指定のフォルダに移動する方法
- GASでGoogleフォームに記述式の質問を追加する方法
- GASでGoogleフォームにメールアドレスの入力欄とバリデーションを追加する方法
- GASでGoogleフォームにラジオボタンの質問を追加する方法
- GASでGoogleフォームにチェックボックス形式の質問を追加する方法
- GASでGoogleフォームにプルダウンリストの質問を追加する方法
- Googleフォームの質問の選択肢をスプレッドシートのデータから生成するGAS関数の作り方
- GASでGoogleフォームに追加できる質問の種類とそのメソッドまとめ