とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub
スポンサードリンク

【GAS】Google Apps SrriptでGoogle ドライブにファイルをアップロードする

Google Drive(ドライブ)にファイルをアップロードするアップローダーを作ってみた


Google Apps Script、通称 GAS のポテンシャルが高いと言われてる。
実際に使ってみると確かに洗礼された設計が行われてる。

それでもなかなか浸透していない理由は
プログラミングに関して独自の解釈が必要で、
デザインやScriptの作成概念を理解しないとなかなかとっつきにくい。

というわけで練習がてら
Googleドライブへのファイルアップロードをコードで実装してみた。

これまでも未知の言語、例えばPHPを初めて触るときなんかは
アップローダーを実装してきた理由は
アップローダーを作る場合、クライアント側からサーバー側へファイルを送る動作
サーバー側からクライアント側へ結果を返す動作をイヤでも作りこまないとダメだから
理解が深まりやすいと思ってるからです。

というわけでGO

createFileUploadメソッド


クライアント側の実装はなんといってもファイルアップロード
HTMLとしては
<input type = “file”>
を出力しなければいけないので
{Uiインスタンス}.createFileUpload()を使います。
そしてcreateSubmitButton()で、<input type="submit" value="アップロード">を作ります。
そしてこの2つをhtmlでいうところのformとして扱います。

Google Apps Scriptを利用する上で絶対に理解しないといけないのが
{Uiインスタンス}で、このオブジェクトを利用することで、htmlの出力を指示していくわけですが
これはまたの機会に・・・

DriveAppクラス


サーバー側の処理としては、Googleドライブを操作するために
DriveAppクラスのメンバを操作します。
今回はGoogleドライブの特定のフォルダにファイルをアップしたかったので

DriveApp.getFolderById('XXXXX');

でフォルダを取得し、createFile()メソッドでクライアントから引き渡されたファイルを
フォルダの中に作っています。

doPost(e)メソッド


クライアント側からサーバー側にポストされた時、
doPost(e)が実行されます。この辺の仕組みや概念の学習が必要で
Google Apps Srriptを利用する場合必須の知識となります。

今回はeに格納されているアップロードされたファイルを取り出し
Googleドライブにファイル作成を行っています。

アップローダーのソースコード


できあがったコードはこんな感じ


GAS (共有の都合でみえないかも)
GASアップローダー
実行画面はこんな感じ。

実行画面

ファイルを選んで、アップロードをクリック
アップロード完了

Googleドライブにファイルが保存できた。
ドライブ

ちなみに選択ファイルが0byteの場合、Googleドライブ側ではファイルが選択されていないのと
同じ扱いになるので注意です。

注意 2014年12月:Class UiApp が非推奨となりました


新しく、HTML Serviceを使うことが推奨されているようです。
追加記事を作成していますので
【GAS】HTML Serviceを使ってGoogleドライブにファイルをアップロードする
を参照下さい。
▼この記事を読んだ方は、こんな記事も読んでいます。▼

スポンサードリンク

テーマ:プログラミング - ジャンル:コンピュータ

コメント

Re: ファイルの同時アップロード数に関して

> 先日この記事を見つけ、これを元にしてアップローダーを作成させていただきました。
>
> 1つお聞きしたいのですが、複数ファイルを同時にアップさせたい場合はどのようにすればよいのでしょうか?
>
> 知識不足で申し訳ないのですが、お時間があれば回答よろしくお願いします。

ご連絡ありがとうございます。

新しく「【GAS】HTML Serviceを使ってGoogleドライブにファイルをアップロードする 」を投稿しましたので
参考になれば幸いです。
今後ともよろしくお願いいたします。

  • 2015/01/17(土) 18:51:37 |
  • URL |
  • Dalmore #-
  • [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://dalmore.blog7.fc2.com/tb.php/100-15bab50d
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad