【GAS】GoogleドライブにあるフォルダとファイルがGoogle Apps Scriptに使用されているかどうかを確認する

1039 語
5 分
【GAS】GoogleドライブにあるフォルダとファイルがGoogle Apps Scriptに使用されているかどうかを確認する

はじまり#

135ml avatar
135ml
Googleドライブにあるファイルを消そうとした時に、そのファイルがスクリプトで使用されていないかどうか気になったことはないですか?
リサちゃん avatar
リサちゃん
うーん・・・ありませんね。
135ml avatar
135ml
そうかそうか、やっぱりあるよな。そこで今回は、指定したIDがスクリプトの中で使用されているかどうかを確認するツールを作りました。紹介します。
リサちゃん avatar
リサちゃん
・・・よろしくね

ツールの概要#

前回、自分がGoogle Apps Scriptで使用しているIDを管理するライブラリを作りました。

その過去の紹介記事は以下になります。

そして、今回はそのライブラリを使って、スクリプト内で指定したIDが各々のスクリプトの中で使用されているかどうかを確認するツールを作りました。

本ツールを実行して、指定したIDが使われている場合は、「ID: ‘XXXXXXXXXXXX’ is used.」といった具合にIDが使用されていることを知らせてくれます。

作る過程#

それでは、本ツールの制作過程を紹介します。

IDの受け渡し部分の変更#

まず、前回作った各スクリプトへのIDの受け渡し部分なのですが、返り値をObject型になるように変更します。各スクリプトでIDを取得する場合は、属性を指定して取得してもらうように変更します。

この属性名は、以前作成した関数名と揃えてソースの改編を楽にします。

function idObjForFunction(){
let returnObj = {
FOLDER_ID: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
, SHEET_ID: "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"
};
return returnObj;
}

それに伴い、IDを受け取る部分も、以下のようにソースを変更します。

指定したIDがスクリプトの中で使用されているかどうかを確認する機能#

1つのライブラリの中で各々のスクリプトで使用するIDを宣言する状態になりましたので、このライブラリ内で、指定したIDがスクリプトの中で使用されているかどうかを確認する機能を実装します。

ソース全体はこんな感じになっています。

function checkIdIsUsed(checkIdArray){
let objsInTarget = [
idObjForWebClipManager()
, idObjForImageCroppingSheet()
, idObjForLandmasterLibraryGas()
];
let keys = [];
let returnedId = "";
let resultOfUsed = false;
let isIdUsedArray = [];
console.log(`checkIdIsUsed: print objsInTarget's elements: start --------------------------------------------------------`);
console.log(objsInTarget);
console.log(`checkIdIsUsed: print objsInTarget's elements: end --------------------------------------------------------`);
for(let i = 0; i < checkIdArray.length; i++){
resultOfUsed = false;
for(let j = 0; j < objsInTarget.length; j++){
console.log(objsInTarget[j]);
keys = Object.keys(objsInTarget[j]);
for(let k = 0; k < keys.length; k++){
returnedId = objsInTarget[j][keys[k]];
if(checkIdArray[i] === returnedId){
resultOfUsed = true;
break;
}
}
if(resultOfUsed){
break;
}
}
isIdUsedArray.push(resultOfUsed);
}
return isIdUsedArray;
}
function main(){
let checkIdArray = [
"ID1"
, "ID2"
];
let isIdUsedArray = checkIdIsUsed(checkIdArray);
let strIdUsed = " NOT";
for(let i = 0; i < checkIdArray.length; i++){
strIdUsed = " NOT";
if(isIdUsedArray[i]){
strIdUsed = "";
}
console.log(`ID: '${checkIdArray[i]}' is${strIdUsed} used.`);
}
}

objsInTargetで、各スクリプトで使用するIDを宣言したオブジェクトを配列形式でリストアップします。

そして、引数で渡したcheckIdArrayにファイルIDやフォルダIDが指定されているので、objsInTarget内のオブジェクトのキーを全て走査し、指定したIDがobjsInTargetの中にあるかどうかを探索します。

IDが見つかったら、checkIdArrayと同じインデックスにtrueが格納されて、IDが無かったら、falseが格納されます。

IDが使用されているかどうかを表示#

main()isIdUsedArrayに、trueかfalseを保持した配列が返ってきたので、そのboolean値によって、checkIdArray内で同じインデックスにあるIDが使用されているかどうかをconsole.logで表示します。

これで、本ツールの紹介は以上になります。

なぜ、この方法にしたのか#

以前の記事では、本ライブラリのスクリプトファイルを指定して、それらをgrepしてIDを探索する方法を思いつきました。

しかし、なぜその方法を採用しなかったのかと言うと、 この機能を動かす動機としては、Googleドライブを操作しているときに発生します。

そのため、Googleドライブから本機能の実行までの動線を単純にするためには、grepの実行による方法を取るよりも、Google Apps Scriptのコンソールを開いて実行した方が確認作業が楽になるのではないかと考えました。

GitHub Actionsなどにいちいち移動するよりは、同じGoogle内のサービスで完結するほうが単純です。

以上、今回の方法を採用した理由でした。

おしまい#

リサちゃん avatar
リサちゃん
これで、フォルダやファイルを削除したことが原因でスクリプトが動かなくなる、みたいなことが無くなるね!
135ml avatar
135ml
うむ。今回の大目的がまさしくそれだった!

以上になります!

記事を共有

この記事が役に立ったなら、ぜひ他の人と共有してください!

【GAS】GoogleドライブにあるフォルダとファイルがGoogle Apps Scriptに使用されているかどうかを確認する
https://endorphinbath.com/posts/gas-files-are-used-in-script/
著者
kinkinbeer135ml
公開日
2022-09-18
ライセンス
CC BY-NC-SA 4.0
関連記事 スマート
1
【GAS】自分がGoogle Apps Scriptで使うファイルIDとかフォルダIDを管理するライブラリを作ればいいじゃん
Code Google Apps Scriptで記述したフォルダやファイルのIDを一括管理するためのアイデアを掲載します。これで、どのフォルダとファイルがスクリプトで使用されているかどうかを管理できます。
2
【GAS、Google Spreadsheet】Googleドライブのフォルダに有るファイルを一覧で取得するスクリプトです
Code GoogleDriveの指定のフォルダにあるファイルを一覧で取得します。Googleドライブを整理したい時に役立つツールになるかと思います。
3
【GAS、Google Spreadsheet】Googleドライブ内の指定したフォルダに所定のファイルをコピーするスクリプトです
Code GoogleDriveの指定のフォルダにファイルをコピーするツールを作りました。何かWebの記事をGoogleドキュメントにクリップしたり、指定のフォルダにメモ書きやシートを作成したい場合に役立つかと思います。
4
【GAS、Google Spreadsheet】Googleドライブのルートフォルダに有るフォルダを一覧で取得するスクリプトです
Code GoogleDriveのルートフォルダにあるフォルダを一覧で取得します。Googleドライブを整理したい時に役立つツールになるかと思います。
5
【GAS、Google Spreadsheet】ブログに使用した画像をGoogleドライブで管理するために書いたスクリプト
Code 僕は、既に公開した記事で使用したファイルをGoogleドライブの所定のフォルダに保存しています。その画像を完了済みのフォルダに定期的に移動してくれるスクリプトを作りました。
ランダム記事 ランダム
Profile Image of the Author
kinkinbeer135ml
SIerをやめて、プログラミングを勉強しています。※Amazonアソシエイトに参加しています。
お知らせ
私のブログへようこそ!これはサンプルのお知らせです。
音楽
カバー

音楽

再生中なし

0:00 0:00
歌詞なし
カテゴリ
タグ
サイト統計
記事
287
カテゴリー
8
タグ
93
総文字数
486,174
運用日数
0
最終活動
0 日前

目次