久々のGAS案件。
もうすぐ技術書典ですね(震)
執筆を加速させていきたいところですが、やっぱり締切駆動開発になりがちになってしまって、進歩しないなぁと思う今日このごろです。
ここで、この状況を打破すべく、他の人の進捗を監視して自分を戒めるシステムを構築してみようと思います!そんなシステム構築してる暇があったら、さっさと書けよ!
某弊チームの技術書典向け原稿はGoogle Drive上で管理しているので、もしかしたらGoogle Apps Script(GAS)が使えるかもしれない!と思い、いろいろやってみたことをメモしていきます。
GASで色々な情報をgetしてみる
まずはGoogle Drive上のファイルへのアクセスはDriveAppクラス
が使えるはず。
監視したいファイルやフォルダのIDが分かれば、そのIDから色々の情報が取得できます。
たとえば、あるファイルの最終更新日を取得するには、こんな感じでコーディングしていきます。
function myFunction() { var id = 'xxxxx' var file = DriveApp.getFileById(id) Logger.log(file.getLastUpdated()) }
これを実行すると、権限付与を求められますが、一度付与して実行すると・・・。
こんな感じで最終更新日を取得することができます。一方で、技術書典を複数人で執筆していて、その進捗共有用のSpreadsheetの場合、最終更新日とともに誰が更新したのか気になるんですが、その情報はDriveAppクラス
では取得できないのです・・・
実はDriveAppクラス
とは別に、[リソース] > [Googleの拡張サービス]からDrive API
を有効にするとDriveクラス
がGASから叩けるようになります。
これは、いわゆるGoogle Drive APIで、APIでできることがGASから叩けるようになります。たとえば、先程の最終更新をしたのが誰かを取得するには、このDriveクラス
を使っていきます。
function myFunction() { var id = 'xxxxx' var file = Drive.Files.get(id) Logger.log(file.lastModifyingUserName) }
こんな感じ。で、実行すると・・・
ちゃんと取得できましたー。(個人名なので伏せてますが・・・)
というわけで
なんとなくGoogle Drive上のファイルの情報を引き出せそうな気がしてきました。今後は、定期的にファイルをポーリングして監視したり、それを何かしらの形で通知する方法を考えていきたいところです。はやく執筆しろ。