指定したGoogleドライブフォルダにショートカットを作成(その2)[GAS]
先日、「指定したGoogleドライブフォルダにショートカットを作成する」という記事を書きました。
その際は「各社員からの提出がそろったところで実行する」という前提のスクリプトでしたが、状況によっては「フォーム送信時に即時的に実行したい」という時もあります。
Googleフォームの送信トリガーを用いて実装します。
あらかじめ、部署名とそれに対応するGoogleドライブ中のフォルダのURL、IDをシート「部署名DB」に用意しておきます。
(※実際には「フォルダURL」は不要ですが、今回はあえて列Bにその列を設け、列C「フォルダID」に以下の関数を仕込んでIDを抽出しています)
次に、Googleフォームの右上にある三点リーダーより「スクリプトエディタ」を開き、以下のスクリプトを記します。
function onSubmit(e) {
const itemResponses = e.response.getItemResponses();
const dept = itemResponses[1].getResponse(); //2番目の質問「部署名」への回答を定数「dept」に代入
const url = itemResponses[2].getResponse(); //3番目の質問「ファイルURL」への回答を定数「url」に代入
const id = url.split('/d/')[1].split('/')[0];
const tgtFolderId = getFolderId(dept); //部署名を関数getFolderIdに渡し、部署に割り当てたフォルダのIDを取得
DriveApp.getFolderById(tgtFolderId).createShortcut(id);
}
//部署名を受け取り、シート「部署名DB」からフォルダIDを返す関数
function getFolderId(dept) {
const deptSheet = SpreadsheetApp.openById('***スプレッドシートID***').getSheetByName('部署名DB');
const deptData = deptSheet.getDataRange().getValues();
deptData.shift();
//部署名が一致したら列CのフォルダIDを返す
for (const data of deptData) {
if (data[0] === dept) {
return data[2];
}
}
}
function「onSubmit」にフォーム送信時トリガーを作成します。
以上の実装で、フォームが送信された際にGASが実行され指定されたGoogleドライブフォルダにショートカットを作成することができます。
※類似記事として「ファイルをコピーする」というケースを書きました。
この記事が気に入ったらサポートをしてみませんか?