あけましておめでとうございます。
昨年の9月に本ブログを開設して1年となりましたが、意外と見てくださっている方が多くView数も意外とあり、見てくださった方には感謝申し上げます。
本年はブログをもっと見やすく、RPAに関わらないAWS、AI等の話題にも触れていけるようにコンテンツをリニューアルする予定していきますので、引き続きよろしくお願いいたします。
改めまして、 自称)BizRobo!エンジニアのもりりんです。
今回は、短編の「GoogleDriveAPIで共有フォルダを参照する」です。
昨年末にGoogoDriveの共有フォルダを参照するロボットを作成した際に久しぶりす過ぎて苦戦したので、備忘録として残します。
短編なので、サクサクと始めていきましょうー。
GoogleDriveAPIのアクセストークンの取得について
BizRobo!のナレッジベースでも説明はされており、ググると様々な方が書いたブログも見つかるので、今回は説明を割愛いたします。
事前準備としては、MCを利用中の場合はMCのOAuth機能にてアクセストークン等一式を取得してください。
miniをご利用の場合は、Robot-Hubにて弊社が提供しているConnectorを活用すると上記のMCのOAuth機能と同様のアクセストークンを取得できます。
Robot-Hubダウンロード先:【Connector】MCを必要としないGoogleAPIのアクセストークン取得
BizRobo!のナレッジベース:Google APIを有効にし、クライアントファイルをダウンロードする。
GoogleDriveAPIのマイドライブと共有ドライブについて
普段仕事で利用するなら、圧倒的に共有ドライブでファイル共有されることが多いかと思います。
今回作成したロボットは、共有ドライブ内にある特定フォルダを監視し、ファイルがアップされたら指定された操作をするものでした。
GoogleDriveAPIは簡単に利用できる反面、デフォルトではマイドライブのみへのアクセスが許可されている状態となります。
そのため、共有ドライブにアクセスするためには、リファレンスに記載されているオプションを適切に追加する必要があります。
GoogleAPIを含む、メジャーなサービスは海外発祥のものが多く、リファレンスも英語で作られています。
私も例にもれずGoogle翻訳等で確認しますが、うまく表現されない、細かなニュアンスが伝わらない等ある祭は、原文と比較し確認しましょう。
今回は「共有ドライブ内にある特定フォルダ」を参照するため、「Files:list」APIを利用します。
Files:list
概要は以下のようになっており、URLは「Files:get」と似ています。

その分、設定できるリクエストパラメータは「Files:get」の3倍ほどあります。

マイドライブでも利用するパラメータは、「fileds」「q」になります。
「fields」:ドライブを検索した結果、どの情報を返してほしいのか
今回は、ファイルIDをファイル名を指定します。
なお、指定できる項目はこのページでは確認できないため、リンクから辿るか下記リンクから確認してください。

「q」:ドライブを検索する条件(複数可)
欲しい情報を取得するには、検索条件は指定しますよね。
残念ながらGoogleAPIでは、qというパラメータにSQLのように記載しなければなりません。
こちらもリンクから設定方法を確認できます。

今回の検索は、①指定したフォルダ内に存在するデータ、②ゴミ箱のデータは対象外とします。
検索対象をフォルダのみ(または、ファイルのみ)、指定した拡張子のみ(.pngや.pdfのような)といったことも可能です。
ファイル数が多い場合は1回で検索しきれない可能性があるので、ページサイズやページトークンの利用も検討した方がいいですね。
マイドライブを検索
上記の条件でサクッとマイドライブを検索してしまいましょう。
- fields
-
fields(id, name)
- q
-
‘フォルダID’ in parents and trashed=false

検索結果


よし、マイドライブは問題なかったので、共有フォルダもパパッと済ませてしまおう。
と思い、同じ処理のまま共有ドライブのフォルダIDに変更してみると…

あれ…何も表示されなくなりました。

※このIDは削除済みです

共有フォルダを検索できるようにパラメータを追加
共有ドライブを検索するために必要なパラメータは以下です。
- includeItemsFromAllDrives
-
①共有ドライブを検索対象にするか(デフォルト;OFF)
- supportsAllDrives
-
②共有ドライブの検索を許可するか(デフォルト;OFF)
説明する際の順番的には、②→①の方がしっくりくるかと思いますが。リファレンスでの記載順としています。
2つのパラメータを追加して、再度実行してみると共有ドライブに配置した 3ファイルが取得できています。
なお、パラメータをどちらか1つしか設定した場合は検索されません。

最後に
私の投稿は3ヶ月ほど空いてしまっていたため、新年一発目のブログというよりは久しぶりの投稿となりますが、いかがでしたでしょうか。
GoogleDriveを含めAPI系の解説は、Node.js、PHP、Python、C#.NET等のプログラム開発者向けの記事をよく見かけますが、ライブラリ等を利用せず純粋なURL方式での解説は余り見かけません。
そのため、APIの利用に二の足を含む方が多いという印象ですので、そういった方への参考情報になれば幸いです。
すぐに使いたい方は、 Robot-HubでRPAT社がGoogleDrive用Connectorを公開しているので、Ver.11以上の方はそちらを利用するといいかもしれません。
弊社では(というより、私の方針で)、Connectorを利用するとDSの読み込みが遅くなる致命的な使いにくさがあるため、最低限のConnectorのみ利用し、API系は「Webサービス呼び出し」で実装しています。
DSで完結できるので、できればDA/Chromiumは使いたくないユーザ様には是非頑張っていただきたいところです。
今回も最後までお読みいただきありがとうございました。
本年も、あまり情報が公開されていない機能を色々検証していきます。

RPAは一般的な業務システムとは異なり、PoCを実施し、導入・運用開始で終わりではありません。
導入がスタートラインです。
業務効率化、人員最適化等の目標に応じた計画策定や人員配置、業務ロボットの開発・運用といったPDCAサイクルが必要です。
弊社では、貴社の課題に適した自動化プランのご提案や開発者育成研修も実施し、貴社と並走したサポートをご提供いたします。
お気軽にお問い合わせください。
BizRobo!や弊社サポートについて詳しくはこちら