[GAS][Sites]サイトにファイルをアップロードするには: 逆引きGoogle Apps Script

2012 年 7 月 22 日 日曜日

▼サンプルスクリプト

サイトに貼り付けたファイルアップロードフォーム(Google Apps Script UiAppにより作成)から、指定したページにファイルをアップロードするサンプルスクリプト。

サイトにファイルアップロードフォーム貼付け

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function doGet() {
  var app = UiApp.createApplication();
  var form = app.createFormPanel().
      setTitle('ファイルアップロード').
      setEncoding('multipart/form-data');
  app.add(form);
  form.add(
    app.createHorizontalPanel().add(
      app.createFileUpload().setName('sample').setId('sample')
    ).add(
      app.createSubmitButton('アップロード')
    ));
  return app; 
}
 
function doPost(e){
  var app = UiApp.getActiveApplication();
  try{
    var filePage = SitesApp.
        getPageByUrl("https://sites.google.com/xxxxxxx");
    var uploaded;
    if (e.parameter.sample.length > 0){
      var uploaded = filePage.
        addHostedAttachment(e.parameter.sample);
      app.add(app.createLabel('upload completed.'));
    } else {
      app.add(app.createLabel('no input file specified.'));
    }
  } catch (error){
    app.add(app.createLabel('error'));
  }
 
  return app;
}

行2 UiApp.createApplication()により、Uiのインスタンスを生成している。
行3-
行5
createFormPanel()により、フォームパネルを生成している。フォームパネルはHTMLの<form>に相当し、SubmitButtonとあわせて利用される。setEncoding('multipart/form-data')としているが、これはHTMLでファイル送信フォームを作成するのと同じく、特別な形式でPOST送信を行う必要がある。
行9 {Uiインスタンス}.createFileUpload()は、レンダリング時に<input type = “file”>に展開される。また、続けて記載しているsetName('sample')は<input>のname属性となり、POST送信時にe.parameter.sampleで値を読み取ることができる。
行20 getPageByUrl(url)でパラメータで指定したUrlのページオブジェクトを取得している。今回ファイルをアップロードする対象となるページ。
行24 {ページ}.addHostedAttachment(Blob)により、Blob(バイナリデータ)を{ページ}にアップロードすることができる。

構文

addHostedAttachment(blob)

addHostedAttachment(blob, description)

blob
バイナリデータ
description
添付ファイルの概要。

戻り値

Attachment
添付したファイルオブジェクト

関連記事

コメントをどうぞ

トラックバック

このエントリーのトラックバックURL:

http://www.bmoo.net/archives/2012/03/313608.html/trackback