Androidのメモとか

ポキオの日記です。今日も遅延してない。

技術書典に向けてGoogle Drive上のファイル監視をGASからやってみる(前編)

久々のGAS案件。

ポキオ GoogleAppsScript GAS 技術書典

もうすぐ技術書典ですね(震)

執筆を加速させていきたいところですが、やっぱり締切駆動開発になりがちになってしまって、進歩しないなぁと思う今日このごろです。

ここで、この状況を打破すべく、他の人の進捗を監視して自分を戒めるシステムを構築してみようと思います!そんなシステム構築してる暇があったら、さっさと書けよ!

ポキオ GoogleAppsScript GAS 技術書典

某弊チームの技術書典向け原稿はGoogle Drive上で管理しているので、もしかしたらGoogle Apps Script(GAS)が使えるかもしれない!と思い、いろいろやってみたことをメモしていきます。

developers.google.com

GASで色々な情報をgetしてみる

まずはGoogle Drive上のファイルへのアクセスはDriveAppクラスが使えるはず。

developers.google.com

監視したいファイルやフォルダのIDが分かれば、そのIDから色々の情報が取得できます。

ポキオ GoogleAppsScript GAS 技術書典

たとえば、あるファイルの最終更新日を取得するには、こんな感じでコーディングしていきます。

function myFunction() {
  var id = 'xxxxx'
  var file = DriveApp.getFileById(id)
  Logger.log(file.getLastUpdated())
 }

これを実行すると、権限付与を求められますが、一度付与して実行すると・・・。

ポキオ GoogleAppsScript GAS 技術書典

こんな感じで最終更新日を取得することができます。一方で、技術書典を複数人で執筆していて、その進捗共有用のSpreadsheetの場合、最終更新日とともに誰が更新したのか気になるんですが、その情報はDriveAppクラスでは取得できないのです・・・

ポキオ GoogleAppsScript GAS 技術書典

実はDriveAppクラスとは別に、[リソース] > [Googleの拡張サービス]からDrive APIを有効にするとDriveクラスがGASから叩けるようになります。

developers.google.com

これは、いわゆるGoogle Drive APIで、APIでできることがGASから叩けるようになります。たとえば、先程の最終更新をしたのが誰かを取得するには、このDriveクラスを使っていきます。

function myFunction() {
  var id = 'xxxxx' 
  var file = Drive.Files.get(id)
  Logger.log(file.lastModifyingUserName)
 }

こんな感じ。で、実行すると・・・

ポキオ GoogleAppsScript GAS 技術書典

ちゃんと取得できましたー。(個人名なので伏せてますが・・・)

というわけで

なんとなくGoogle Drive上のファイルの情報を引き出せそうな気がしてきました。今後は、定期的にファイルをポーリングして監視したり、それを何かしらの形で通知する方法を考えていきたいところです。はやく執筆しろ。

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。