この記事では、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に少し慣れて来たら、基礎固めとリファレンスとしてこの本を通してじっくり学べます。