今回はGoogle driveにアップロードしてある領収一覧をスプレッドシートに一つ一つURLを貼り付けるという作業がとても大変だと思いました。
そんな時に、エンジニアである僕は必殺技を使用しようと思っていました。
GASを使用すれば、Google DriveのURLを全部貼り付けることができるなと。たった10分,20分の作業が嫌すぎて、チャレンジしましたので、その方法がこちらです。
GASの基本
GASとは、Google Apps Scriptの略称です。GASは、Javascriptの言語をベースにGmailやGoogle Spreadsheet、Google CalendarなどのGoogleが提供するさまざまなサービスを連動させて自動化や連携を行うことができるサービスになります。
Apps Script は、Google Workspace の統合、自動化、拡張のためのビジネス ソリューションをすばやく簡単に構築するための唯一のローコード プラットフォームです。Apps Script を使えば、ビジネス ユーザーは本格的なソフトウェア開発の経験がなくても、Google Workspace 上にカスタム ソリューションを構築できます。Apps Script は、Gmail アカウントをお持ちであればどなたでもご利用いただけます。
https://workspace.google.co.jp/intl/ja/products/apps-script/
GASを使用すれば、Googleのアプリをどんどん便利にできてしまうという優れものということです!
GASを利用して、Google SpreadsheetとGoogle Driveの中身を連携
今回、実践したいことをこちらにまとめておきます。
- Google Driveからファイル一覧を取得します
- ファイルを一つずつ取り出して、ファイルの共有URLを取得します
- それらをSpreadsheetに対して貼り付けを行っていきます
【実践】GASを利用してファイル一覧を取得、Google Spredsheetに反映する
上記やりたいことを一つずつ丁寧に解説していきます!
まずはGoogle DriveのAPI一覧を表示させます
// プロジェクトのSpreadsheetをここに置いておきます
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet();
// Google Driveのフォルダーを取得
const foler = DriveApp.getFolderByID("〇〇〇〇〇〇");
上記の〇〇の部分には、Google DriveのIDを入れます。
Google DriveのIDというのは、こちらになります!
https://drive.google.com/drive/folders/〇〇
上記の〇〇に当たる部分がフォルダIDになります。
ここまでで、Google Driveの読み込みをしました。
GASを使用して、DRIVEの中を展開していく
// 上記で取得したフォルダーの中から、ファイル一覧を取得します
const folderFiles = folder.getFiles();
// ログで上記を表示させる
Logger.log(folderFiles) // 出力結果: fileIterator
// シートの上から、順に記述するために変数iを設定しておきます。
let i = 1;
// fileIteratorはこのように、while文で次の要素を拾っていく
while(folderFiles.hasNext()) {
let fileIterator = folderFiles.next();
// ファイルを取り出して、IDを保存
const id = fileIterator.getId();
// ファイルをidで取得
const file = DriveApp.getFileById(id);
// 取得したファイルから名前を取得
const name = file.getName();
// 取得したファイルから共有用URLを取得
const shareUrl = file.getUrl();
// 一つずつsheet に反映をします
sh.getRange(i,1).setValue(name);
sh.getRange(i,2).setValue(shareUrl);
}
とてもシンプルな記述です。
注意点は、const folderFiles = folder.getFiles()というところから見ると、ファイル一覧の取得をすると、fileIteratorという値になっています。
こちらに関しては、while(folderFiles.hasNext())を利用することで、ファイルを一つずつ取得していきます。
まとめ
今回はファイルGASを利用したGoogle DriveとGoogle Spreadsheetの連動について解説しました。
実際に10 ~ 20分の作業をめんどくさがった結果、30分ぐらい実装にかかってしまいました。
ただ、このコードを一度作れば他のコードにも転用が可能なので、今後もうまく利用していくことはできそうです。以上で、解説を終了にします!