【GAS】自分がGoogle Apps Scriptで使うファイルIDとかフォルダIDを管理するライブラリを作ればいいじゃん

1096 語
5 分
【GAS】自分がGoogle Apps Scriptで使うファイルIDとかフォルダIDを管理するライブラリを作ればいいじゃん

はじまり#

リサちゃん avatar
リサちゃん
作業にGoogle Apps Scriptを使うことが多いのだが、そのスクリプトで書いたGoogleスプレッドシートやGoogleドライブのIDがどのファイルのことを書いたか忘れちゃうんだよなあ・・・
135ml avatar
135ml
お困りですか?
リサちゃん avatar
リサちゃん
うむ、フォルダIDとかファイルIDを一括で管理できれば良いんだけど・・・
135ml avatar
135ml
そんな時は、自分がGoogle Apps Scriptで使うファイルIDとかフォルダIDを管理するライブラリを作ればいいじゃん。

GASで書いたファイルIDとかフォルダIDが点在していませんか?#

Google Apps Scriptでは、例えば以下のようなメソッドや関数を使う時に、ファイルIDやフォルダIDを記述すると思います。

// Google Drive
let folder = DriveApp.getFolderById("ID");
let file = DriveApp.getFileById("ID");
// Google Docs
let doc = DocumentApp.openById("ID");
// Google Spreadsheet
let ss = SpreadsheetApp.openById("ID");
// Google Slides
let slide = SlidesApp.openById("ID");

コードの中にIDを直書きしてしまうと、後々見返した時に、どこのスクリプトにIDを記述されているのかが追えなくなるという事態が、僕の中で問題の1つとしてありました。

この状態だと、例えば、その記述されているフォルダやファイルを消してしまった時に、そのスクリプトが気づかぬ間に動かなくなってしまう危険性があります。

そこで、IDを一括管理するためのライブラリを作った#

そこで、初期段階として、1つライブラリを作りました。

以下、そのライブラリを「ID一括管理ライブラリ」と呼びます。 どんなものかと言うと、僕は普段スクリプトを書く時に、そのスクリプトに使うIDとかの定数をスクリプトの特定のファイルに一括で管理しています。

そこの定数の宣言時にID一括管理ライブラリ内の関数を読み込ませます。

そして、読み込まれる方のID一括管理ライブラリでは、各々のスクリプトで使用するフォルダやファイルのIDを関数の返り値として記述します。 こうすることで、ファイルIDやフォルダIDの定数を保持しているのは、ID一括管理ライブラリのみとなります。

このライブラリには、Google Workspace利用するフォルダIDとファイルIDだけではなく、スクリプト内でリクエストしたいURLを書くのもアリですし、OAuth tokenを記述するのもアリかと思います。

まあ、OAuth tokenとかを書くのであれば、そのライブラリは間違いなくPrivateにするべきですが・・・。まあ、基本的にこの「ID一括管理ライブラリ」は自分だけ閲覧できる状態にするべきだと思います。

ライブラリを読ませる方法#

さて、この「ID一括管理ライブラリ」を利用する方法です。

「ID一括管理ライブラリ」のスクリプトIDをコピーする#

まずは、スクリプトIDをコピーします。 スクリプトエディターの画面の左側の歯車をクリックすると、スクリプトの設定画面になります。

その画面で、「ID一括管理ライブラリ」のスクリプトIDが表示されますので、「コピー」をクリックします。

「ID一括管理ライブラリ」を読み込ませるスクリプトにインポートする#

「ID一括管理ライブラリ」を読み込ませられるように設定します。

スクリプトエディタ上の「ライブラリ」一覧の「+」ボタンをクリックします。

すると、インポートするスクリプトIDを入力するポップアップが表示されますので、先程コピーした「ID一括管理ライブラリ」のスクリプトIDを貼り付けます。

そうすると、「ID一括管理ライブラリ」を読み込めます。今回は、自分だけが利用するライブラリになりますので、「HEAD(開発モード)」を選択して「追加」をクリックします。

これで、スクリプトに「ID一括管理ライブラリ」を導入することが出来ました!

補足#

今回、「HEAD(開発モード)」を利用するので、Google Cloud Platform(GCP)プロジェクトの設定を行う必要はないかと思います。

おそらく、Google Apps Scriptのホーム画面にある、この「Google Apps Script API」もオフのままでいけるのではないでしょうか。(ちょっと自信ないです。インポートできなかったらオンにしてみて下さい。)

これからの構想#

これで、Googleドライブにあるフォルダ/ファイルのIDを一括管理することが出来ました。

そして、次の段階としては、Googleドライブ上のフォルダ/ファイルを削除しようと思った時に、 このライブラリのスクリプトファイルの中身を読み取って、自分が作成したスクリプトにそのIDが使用されていないかどうかをチェックするツールを作れれば良いかなと思っています。

これで行けそうな気がしますね。まあ、今度取り組んでみたいと思います。

Terminal window
grep 'ID' -r ./

おしまい#

135ml avatar
135ml
今回は、GASライブラリ上でやってみましたが、他にDBとかで管理する手もあるかと思います。やりやすい方法で一括管理してみましょう。おそらく、スクリプトの手直しや管理がしやすくなるはず。
リサちゃん avatar
リサちゃん
一目で見渡せる。って良いよね。

以上になります!

記事を共有

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

【GAS】自分がGoogle Apps Scriptで使うファイルIDとかフォルダIDを管理するライブラリを作ればいいじゃん
https://endorphinbath.com/posts/gas-management-of-id-frequently-used/
著者
kinkinbeer135ml
公開日
2022-09-13
ライセンス
CC BY-NC-SA 4.0
関連記事 スマート
1
【GAS】GoogleドライブにあるフォルダとファイルがGoogle Apps Scriptに使用されているかどうかを確認する
Code IDを入力して、そのGoogleドライブにあるフォルダとファイルがGASスクリプト上で使用されているかどうかを確認できるツールを作りました。これで、フォルダやファイルを削除したことが原因でスクリプトが動かなくなる事故を防ぎます。
2
【GAS、Google Spreadsheet】Googleドライブのフォルダに有るファイルを一覧で取得するスクリプトです
Code GoogleDriveの指定のフォルダにあるファイルを一覧で取得します。Googleドライブを整理したい時に役立つツールになるかと思います。
3
【GAS、Google Spreadsheet】Googleドライブのルートフォルダに有るフォルダを一覧で取得するスクリプトです
Code GoogleDriveのルートフォルダにあるフォルダを一覧で取得します。Googleドライブを整理したい時に役立つツールになるかと思います。
4
【GAS、Google Spreadsheet】Googleドライブ内の指定したフォルダに所定のファイルをコピーするスクリプトです
Code GoogleDriveの指定のフォルダにファイルをコピーするツールを作りました。何かWebの記事を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 日前

目次