GoogleAppsAPIの第一歩?

佐野

佐野 2014年4月30日

GoogleAppsAPIには、様々な言語がサポートされており、
PHPやJavaやJavaScriptなど、必要に応じて選択できるようです。

そのうち、最も汎用性が高いと思われ、自分自身も比較的得意とする
JavaScriptで実験を行ってみました。

そのサンプルがこちら。
http://lab.taf-jp.com/samples/sample001.html
ウェブ上でサンプルを探し、参考にさせていただきました。
そして、色々改造したため、ややグダグダな部分もありますが。

使用するには、Googleアカウントにログインしている必要があります。
最初に承認ボタンだけが出るので、それを押してアプリ承認をすると、
アップロード機能とフォルダリスト表示機能を使えるようになります。

現時点では、自身のGoogleドライブに対し、ファイルをアップロードする機能と、
ドライブ上のフォルダのリストを表示する機能を備えています。

前者は、ファイルを選択すると、ドライブの最上層のディレクトリに
選択したファイルをアップロードします。

後者は、前者のアップロード機能に、
フォルダ指定機能を付け加えようと考えて作ったものです。

一応はフォルダのデータを取り出す事に成功したものの、
ここで、大きな問題に突き当たりました。

ドライブ上のフォルダ・ファイルを一度全部取得するため、
その数が多いと、表示にものすごく時間がかかる
ということです。

実際にウェブ上で探したサンプルも、一度全フォルダ・ファイルを取得し、
その中からフォルダのみを厳選し表示するという仕組みを取っているようなのです。

上記サンプルの部分で言えば、68行目の関数「ls」が、
フォルダリストを取り出すための関数で、
その中にある「var myCb = function(result){……}」の仮引数である
「result」の値で、全フォルダ・ファイルを取得しており、
この部分で重くなっているという見解です。

自分の個人用アカウントならフォルダ・ファイル含め262アイテムなので、
まだ早くは表示されるものの、
業務用のほうでは、34649アイテムもあるので、
表示までに5分ぐらいかかってしまいます。

これでは使い物にならないのは当然ですが、ところが、どう探しても、
フォルダだけに限定して抽出するなどの方法が見つからないのです。

一応、このアプリの作り方ですけど、まずは、
Google Developers Console」で取得するIDが必要になります。
このページの「APIと認証」にて「Drive API」を「有効」にします。
次に「認証情報」にて、「新しいクライアント ID を作成」ボタンをクリックし、
「アプリケーションの種類」で「ウェブ アプリケーション」を選択し、
「承認済みの JavaScript 生成元」には、APIを作成する場所の
トップディレクトリURLを入力します。
これで「クライアント ID を作成」ボタンを押すと、
「クライアントID」が作成されるので、これを控えておきます。

次にウェブアプリですが、こちらに基本的なサンプルがあります。
https://developers.google.com/drive/web/quickstart/quickstart-js
このスクリプト部分のいちばん上にある変数「var CLIENT_ID」に、
先ほど取得した「クライアントID」を文字列で代入します。

これにより、外部のJavaScriptから、
Googleドライブを、いじれるようになるわけです。

ただ、わかっている所は、現在でここまでです。
これを使い物になるようにしていくには、さらなる研究が必要となるでしょう。
ただ、この情報よりも、GoogleAppsScriptのほうが
より多くの情報が出回っているのも現実で、
この方法でアプリを製作するのも、
GoogleAppsScript以上にマイナーなものと言えるかもしれません。