GASを使用するとき、ほかのファイルと連携するにはそのファイルのidが必要になります。
1つや2つのファイルの場合は、個別に見ていけばいいですが、対象のファイル数が多くなれば一つ一つ確認するのは大変です。
そういうときに、使えるGASを紹介します。
idを一括取得する方法
フォルダー内にあるファイルの一覧を取得し、それをスプレッドシートに書き出します。
今回のファイル構成は次のようになっています。

- id取得フォルダ:idを取得したいファイルが保存されているフォルダ
- id取得:今回のメインとなるidを取得するためのスクリプトファイル(GAS)
- id取得スプレッドシート:idを書き出すためのスプレッドシート
idを取得したいファイルが保存されている「id取得フォルダ」には、次の3つのファイルがあります。

この3つのファイルのidを取得して、そのidをスプレッドシートに書き出します。
今回作成するGASでは、2つの関数を作成します
- ファイルのidを取得して配列に格納
- idを格納した配列をスプレッドシートに書き出し
ファイルのidを取得する
id取得スクリプトファイルに、次のスクリプトを書きます。
フォルダ内のファイルのidを取得するスクリプトです。
//idを取得する関数式
const getFileId = () => {
//idを取得するフォルダの指定
const folderId = DriveApp.getFolderById("取得するフォルダのidをここに書く");
//指定したフォルダ内のすべてのファイルを格納
const files = folderId.getFiles();
//データを格納する配列の宣言
const arr = [];
//2次元配列として追加
//フォルダ内のすべてのファイルについて実行
while (files.hasNext()) {
//すべてのファイルから1つ取り出し
const file = files.next();
//配列にファイルのデータを追加
//getName:ファイルの名前、getId:ファイルのID、getUrl:ファイルのURL
arr.push([file.getName(),file.getId(),file.getUrl()]);
}
//データを格納した配列arrの確認
console.log(arr);
};
4行目には、取得するフォルダのidを記載します。以下のスクリプトの「”取得するフォルダのidをここに書く”」の部分を書きかえてください。
//idを取得するフォルダの指定
const folderId = DriveApp.getFolderById("取得するフォルダのidをここに書く");
取得するフォルダのidは、フォルダを開いたときのURLで確認します。

URLが「https://drive.google.com/drive/folders/123456789」だったとしたら、4行目のスクリプトは次のように変更してください。
//idを取得するフォルダの指定
const folderId = DriveApp.getFolderById("123456789");
getFileIdを実行します。実行は、関数を選択して、三角ボタンをクリックします。

初めて実行する場合は、承認が必要になります。
- 「承認が必要です」というウインドウで、「権限を確認」をクリック
- Googleアカウントでログイン
- 「このアプリはGoogleで確認されていません」の左下の詳細をクリック
- 「(GASの名前)(安全ではないページ)に移動」をクリック→「許可」
実行したら、画面下部にログが表示されます。
ログには、データを格納している配列arrが表示されます。arrには、2次元配列として、データが格納されています。
[
[ 'スプレッドシート', 'スプレッドシートのid', 'スプレッドシートのURL' ],
[ 'スライド', 'スライドのid', 'スライドのURL' ],
[ 'ドキュメント', 'ドキュメントのid', 'ドキュメントのURL' ]
]
idとURLは、実際のファイルのものが表示されているはずです。
取得したidをスプレッドシートに書き込む
フォルダ内のすべてのファイルのidが取得できました。
そのデータをスプレッドシートに書き込みます。
//idを取得する関数式
const getFileId = () => {
//idを取得するフォルダの指定
const folderId = DriveApp.getFolderById("取得するフォルダのidをここに書く");
//指定したフォルダ内のすべてのファイルを格納
const files = folderId.getFiles();
//データを格納する配列の宣言
const arr = [];
//2次元配列として追加
//フォルダ内のすべてのファイルについて実行
while (files.hasNext()) {
//すべてのファイルから1つ取り出し
const file = files.next();
//配列にファイルのデータを追加
//getName:ファイルの名前、getId:ファイルのID、getUrl:ファイルのURL
arr.push([file.getName(),file.getId(),file.getUrl()]);
}
//データを格納した配列arrをスプレッドシートに書き込む
setData(arr);
};
//スプレッドシートに書き込む関数式
const setData = arr => {
//書き込むスプレッドシートのid
const ss = SpreadsheetApp.openById("書き込むスプレッドシートのidをここに書く");
//スプレッドシートのシート名
const sheet = ss.getSheetByName("書き込むスプレッドシートのシート名をここに書く");
//シートの値クリア
sheet.clearContents();
//取得したIDの貼り付け
sheet.getRange(1,1,arr.length,arr[1].length).setValues(arr);
};
先ほどのコードに、スプレッドシートへの書き込む関数式を追加しました。
それに合わせて23行目のconsole.log(arr)をsetData(arr)に書き換えています。
関数式getFileIdで取得した2次元配列arrを、関数式setDataに渡しています。
setDataは、指定したスプレッドシートのシートをクリアした後、受け取った2次元配列をシートに書き込みます。
スプレッドシートに書き込むためには、スプレッドシートのidとシート名を指定する必要があるので、29行目にスプレッドシートのid、31行目にシート名を書き込んでください。

getFileIdを実行すれば、指定したスプレッドシートにidが書き出されます。
スプレッドシートの書き込みについては、次の記事を参考にしてください。
まとめ
GASでファイルのidが必要になったときに、複数のファイルのidを一括取得し、スプレッドシートに書き込む方法を紹介しました。
これを使用することで、ファイルの数が何個あっても、一気にidを取得することができます。
GASを使えば、メールを自動で送信することやLINEと連携したアプリなどを作ることができます。
みなさんもGASで便利なアプリを作ってみませんか。