HomeRPAブログページBizRobo!活用例【API】GoogleDriveAPIで共有フォルダを参照する

BizRobo!ブログ

一富士二鷹三茄子ねこさん

 あけましておめでとうございます。

 昨年の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」と似ています。

GoogleDriveAPI 1

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

GoogleDriveAPI 2

 

 マイドライブでも利用するパラメータは、「fileds」「q」になります。

 「fields」:ドライブを検索した結果、どの情報を返してほしいのか

 今回は、ファイルIDをファイル名を指定します。
 なお、指定できる項目はこのページでは確認できないため、リンクから辿るか下記リンクから確認してください。
 filesレスポンス情報

GoogleDriveAPI fields

 「q」:ドライブを検索する条件(複数可)

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

GoogleDriveAPI q

 今回の検索は、①指定したフォルダ内に存在するデータ②ゴミ箱のデータは対象外とします。
 検索対象をフォルダのみ(または、ファイルのみ)、指定した拡張子のみ(.pngや.pdfのような)といったことも可能です。
 ファイル数が多い場合は1回で検索しきれない可能性があるので、ページサイズやページトークンの利用も検討した方がいいですね。

 

  マイドライブを検索 

 上記の条件でサクッとマイドライブを検索してしまいましょう。
「fields」には、「fields(id, name)」を、
「q」には、「'フォルダID' in parents and trashed=false」を指定します。

ロボットmy 

 検索結果 

マイドライブマイドライブに含まれているファイル

検索結果1GoogleDriveAPIの検索結果

 同じ処理のまま共有ドライブのフォルダIDに変更してみると...
 何も表示されなくなりました。

お手紙ねこさん

検索結果2共有ドライブに含まれているファイル
※このIDは削除済みです

検索結果222GoogleDriveAPIの検索結果

 共有フォルダを検索できるようにパラメータを追加 

 共有ドライブを検索するために必要なパラメータは以下です。
 「①includeItemsFromAllDrives=True」「②supportsAllDrives=True
 説明する際の順番的には、②→①の方がしっくりくるかと思いますが。リファレンスでの記載順としています。

includeItemsFromAllDrives①共有ドライブを検索対象にするか(デフォルト;OFF)

supportsAllDrives②共有ドライブの検索を許可するか(デフォルト;OFF)

 2つのパラメータを追加して、再度実行してみると共有ドライブに配置した 3ファイルが取得できています。
 なお、パラメータをどちらか1つしか設定した場合は、検索されません。

ロボットshare

 

 

 最後に 

 私の投稿は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は使いたくないユーザ様には是非頑張っていただきたいところです。

 今回も最後までお読みいただきありがとうございました。
 本年も、あまり情報が公開されていない機能を色々検証していきます。

 

大阪本社
〒541-0056
大阪市中央区久太郎町2-2-7 山口興産堺筋ビル3階  アクセスマップ
TEL:06-6266-0440   FAX:06-6266-0450