<ねこフォーム2>GASで作成したフォームを指定のフォルダに格納する

この記事では、GAS(Google Apps Script)を使って、フォームを作って行きます。
今回は、作成したフォームを指定のフォルダに格納するプロパティストアについて見て行きます。お世話になった記事は、いつも隣にITのお仕事さんの、

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

です。

まず、前回の復習をします。

このようなスプレッドシートを元に、

このようにフォームを作成しました。
そのコードがこちらです。

function myFunction() {

  //SpreadsheetAppから現在のスプレッドシートにアクセス
  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);
}

今回の内容に入る前に、ねこあつめ画像で癒されます。

では、今回の内容に入ります。

今ではフォームを作成すると、自動でマイドライブの配下に置かれてしまいましたが、今回から、フォームを作成すると、自動的に指定のフォルダに格納できる処理を下記の手順で行います。

1.Googleフォルダ内に格納するフォルダを用意

2.フォルダIDを調べる

3.フォルダIDをキーと紐付けるコード書いて実行する

4.フォーム作成のコードを実行する

では、順に見ていきます。

1.Googleフォルダ内に格納するフォルダを用意
新規作成または、勉強に使えそうなフォルダを用意します。
「ねこねこフォーム作成練習」と言うフォルダを作りました。

2.フォルダIDを調べる
上の画像のフォルダのアドレスで、モザイクかかっているところがIDです。
このIDを次の工程でキーと紐付けます

3.フォルダIDをキーと紐付けるコード書いて実行する
フォーム作成の前に行います。
GASで新たにファイルを作成して、紐づけをするスクリプトのコードを書きます。
32桁の「XXXXXX…XXXXX」のところにフォルダIDを貼り付けて実行します。

//プロパティストアにフォルダIDを格納する
function setScriptProperty(){
  PropertiesService.getScriptProperties().setProperty('FOLDER_ID','XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
}

このように何もログに表示されませんが、FOLDER_IDにX X X X X X XXXXXXXXXXXXXXXXXXXXXXXXXXXXが格納されたことを、下記のプログラムを実行することで確認出来ます。

//プロパティストアにフォルダIDが格納されたことを確認する
function getScriptProperty(){
  const folderid=PropertiesService.getScriptProperties().getProperty('FOLDER_ID');
  console.log(folderid);
}

実行結果です。これで無事にプロパティストアにフォルダIDが格納されたことを確認出来ました。実際のIDはモザイクにしています。

4.フォーム作成のコードを実行する
以上の準備が整ったところで下記のコードを実行します。

その前にもう一度前回のコードを表示します。
この、13行目の下に下記4行を追記します。

前回のコード

function myFunction() {

  //SpreadsheetAppから現在のスプレッドシートにアクセス
  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);
}

追記するコード

//←ここでプロパティストアに格納したFOLDER_IDを使って、指定のフォルダにフォームを作成する
  const id=PropertiesService.getScriptProperties().getProperty('FOLDER_ID');//idにFOLDER_IDを格納する
  const formFile=DriveApp.getFileById(form.getId());//作成したフォームのIDをformFileに格納する
  DriveApp.getFolderById(id).addFile(formFile);//指定のフォルダにフォームを格納する
  DriveApp.getRootFolder().removeFile(formFile);//マイドライブに作成されたフォームを削除する

今回の追記したコードです。

function myFunction() {

  //SpreadsheetAppから現在のスプレッドシートにアクセス
  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);

  //←ここでプロパティストアに格納したFOLDER_IDを使って、指定のフォルダにフォームを作成する
  const id=PropertiesService.getScriptProperties().getProperty('FOLDER_ID');//idにFOLDER_IDを格納する
  const formFile=DriveApp.getFileById(form.getId());//作成したフォームのIDをformFileに格納する
  DriveApp.getFolderById(id).addFile(formFile);//指定のフォルダにフォームを格納する
  DriveApp.getRootFolder().removeFile(formFile);//マイドライブに作成されたフォームを削除する

  //フォームの説明を作成
  form.setDescription(formDescription);
}

実行結果です。

無事に格納されているので、これで安心して勉強を進められます。

ご精読ありがとうございました。

■参考文献の紹介■
初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。

GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本を通してじっくり学べます。

サイトマップはこちらから

GASサンプル集に戻る
メインメニューに戻る
これからプログラミングを始める方へ
基本情報技術者へ
自己紹介

←前に戻るにゃっ!          次行くにゃん(=^x^=)→

投稿者: nekosiestr

プログラミング学習中のロスジェネ(就職氷河期世代)の発達障害者です。 宜しくお願いします。 趣味で写真を撮っています。 プログラミングは、GAS/HTML/CSS/JavaScript/jQuery/PHP、 発達障害は、自閉症スペクトラムASD/ADHD、その他双極性障害やHSP(5人に1人の繊細さん)などの生きづらさを抱えておりますが、それでも楽しく生きて行きたいです!! 写真は、以前はコンパクトデジカメ、現在は、OLYMPUSミラーレス一眼を使っています。