GASからGoogleDrive操作してみた.

概要

Google Apps Scriptを使って, Google Drive上のファイルにアクセスしてみました. 当然ながら, アクセスするのは自分のGoogleアカウントに紐づいたDriveです.

情報源

基本的には公式リファレンスを読めば大体のことがわかります. 困ったときはそちらを参照するのがよいでしょう.

やってみよう

例として, 特定のフォルダにあるファイル名を全てログに出力するということをやってみます.

コード

まずはじめにコード全体をお見せします.

function myFunction() {
    // idをもとにフォルダを取得
    var folder = DriveApp.getFolderById('********');

    // フォルダに属するファイルを全て取得
    var files = folder.getFiles();

    // filesをイテレートして, ファイル名をログに出力
    while(files.hasNext()) {
        var file = files.next();
        Logger.log(file.getName());
    }
}

解説

はじめ, IDをもとにフォルダを取得していますが, そもそもフォルダのIDとは何なのでしょうか. それはGoogleDrive内のフォルダをひとつ開いてみるとわかります. URLが以下のようになっていますよね.

https://drive.google.com/drive/folders/******

******の部分がこのフォルダのIDです. これをコピペすればいいというわけです.

次に変数filesについてです. これはリファレンスを見ればわかるように, FileIteratorクラスのオブジェクトです. ファイルの配列ではないんですね. したがってファイルを順に処理したい場合は上のコードのようになります.

実行

実行するには三角の再生ボタンを押します. 初回の実行時は, 「承認が必要です」とのダイアログが表示されるでしょう. その場合は以下の手順を実行します.

  • 「許可を確認」をクリック
  • 自分のアカウントを選択

このとき, 「このアプリは確認されていません」というダイアログが表示された場合は, 追加で以下の手順を実行します.

  • 「詳細」をクリック
  • 「プロジェクト名(安全ではないページ)に移動」をクリック
  • 「許可」をクリック

これでコードが実行されるはずです. 上部にある「表示」メニューからログを選ぶと, ファイル名が順に表示されているのが確認できます.

さいごに

Google Driveの特定のフォルダにあるファイル名を, すべて列挙することに成功しました. とはいえこれができたところでなにも嬉しくはありません. 次回の記事では今回の応用として, ドライブのフォルダ内にあるエクセルファイルを一括でGoogleスプレッドシートに変換する方法を解説します.