GASで作成したGoogleフォームを指定のフォルダに移動する方法

jump-on

photo credit: byronv2 must climb 05 via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

GASでGoogleフォームを一発で作成するツールの作成する方法をお伝えしています。

前回の記事はコチラ。

GASでGoogleフォームを作成する最も簡単なスクリプト
イベントの申し込みフォームやアンケートを定期的に作成するのでれば、GASでGoogleフォームの作成ツールを作成しておくと便利です。今回は、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つの記事を

【初心者向けGAS】プロパティストアの概要とスクリプトプロパティの入力方法
初心者向けGoogle Apps Script入門として名言Botの作り方をお伝えしています。今回は、コードに直書きしたくないデータを格納する機能プロパティストアについて、またスクリプトプロパティの入力の方法です。
【初心者向けGAS】スクリプトプロパティを操作してそのデータを取り出す方法
初心者向けのシリーズとしてGoogle Apps Scriptで名言Botの作り方を解説しております。今回は、GASでPropertiesサービスを使ってスクリプトプロパティからデータを取り出す方法です。

そして、その次の2行目で、作成したフォームをFileオブジェクトとして取得しています。

フォルダIDの取得方法とともに、以下の記事をご覧ください。

基本中の基本!GASでGoogleドライブのファイル・フォルダをIDで取得する
Google Apps ScriptでGoogleドライブ内のファイルを目的のフォルダに移動したいということはよくあります。今回はそのための準備としてフォルダやファイルをIDで操作する方法です。

フォームのIDを取得する

さて、そのフォームをFileオブジェクトとして取得する際に、getFileByIdメソッドの引数としてフォームIDが必要になります。

フォームIDを取得するには、FormオブジェクトのgetIdメソッドを使います。

Formオブジェクト.getId()

この辺の考え方は、スプレッドシートやドキュメントなど、他のファイルと同様ですね。

指定のフォルダにファイルを移動する

そして、その取得したFileオブジェクトをマイフォルダから指定のフォルダに移動しますが、その方法は以下の二段構えで実現します。

  1. 指定のフォルダにFileオブジェクトを追加する
  2. マイフォルダからFileオブジェクトを削除する

その部分が、前述のコードの4行目と5行目になります。

ここの流れは、以下の記事で紹介しているスプレッドシートの場合と全く同様ですので、参考にしてください。

Google Apps ScriptでGoogleドライブ内のファイルを追加・削除・移動をする方法
Google Apps Scriptで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);
    
  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フォームに記述式の質問を追加する方法
GASでGoogleフォームを作成する方法についてお伝えしています。今回は、GASで作成するフォームに、addTextItemメソッドを使って氏名や会社名などの記述式の質問を追加していきます。

どうぞお楽しみに!

連載目次:GASでGoogleフォームを一発で作成するツールを作る

イベントの申し込みやアンケートにとっても便利なGoogleフォーム。スプレッドシートの入力内容をもとに、一発でフォームを作成するツールを作っていきます。
  1. GASでGoogleフォームを作成する最も簡単なスクリプト
  2. GASで作成したGoogleフォームを指定のフォルダに移動する方法
  3. GASでGoogleフォームに記述式の質問を追加する方法
  4. GASでGoogleフォームにメールアドレスの入力欄とバリデーションを追加する方法
  5. GASでGoogleフォームにラジオボタンの質問を追加する方法
  6. GASでGoogleフォームにチェックボックス形式の質問を追加する方法
  7. GASでGoogleフォームにプルダウンリストの質問を追加する方法
  8. Googleフォームの質問の選択肢をスプレッドシートのデータから生成するGAS関数の作り方
  9. GASでGoogleフォームに追加できる質問の種類とそのメソッドまとめ
タイトルとURLをコピーしました