GoogleAppsScript
gas
typeform

GASを使ってTypeForm上にアップロードされた画像を取得する件

Typeformのセキュリティ強化とそれに伴うGASの改修を記念して


前提

ピティナ では一部のお申込みを Typeform で作っています。

Typeform は直感的な操作でアンケートや簡易的な申込フォームを作れるのが特徴で

一番のお気に入りは、画像アップロード機能とLogicJumpです。

LogicJumpっていうのは要するに if文 を書ける機能で、

回答に応じて表示する質問を変えることができる機能です。

類似のサービスはいろいろありますが、if文 を書けるのはありがたいです。


とりあえず触ってみたい?

公式のサポートセンターが、問い合わせフォームを Typeformで作っているので、

雰囲気を知りたい方はこちら。

[ こんな画面 ]

Submit Ticket  EN .png

※最後に submit しなければ、送信されることもないので安心。


GoogleSheetとの連携

そんな素敵サービスなのですが、アップロードされた画像をダウンロードするには、

Result画面からダウンロードボタンを押さないといけない。

っていうのが、こまったポイントでした。

[ Resule画面イメージ ]

Results.png

正直なところ Typeform の管理画面はびっくりするくらい遅いです。阿部寛さんのサイト10年分くらいかかります。

1000レコード分、一つ一つダウンロードしていたら年が明けます。

そこでスプレッドシートにデータ連携して、取得したURLからダウンロードをします。


データ連携方法

連携方法は2種類です。


Typeform の integrate機能

Result画面にある「integrate」リンクを開くと、各種連携サービスが出てきます。

integration.png

MailChimp とかもありますね。

赤枠で囲った部分がGoogleSheetsとの連携ですが、新しくファイルを作るか、既存ファイルを利用するか選べます。

フォームの全項目(全カラム)分をGoogleSheetに連携してくれて、新しく申込が来るたびにレコードが追加されていきます。


Zapierなど

基本的には、上記の integrate で事足りると思うのですが、integrate ができる前からZapier で連携しているので

そのまま利用しています。

あえて必要性を語るなら、下記のようなケースには Zapier 等の連携サービスが必要になります。


  • 複数のフォームを持っている

  • 各フォームで項目は完全に一致していない

  • GoogleSheetに連携した際、同じ項目は同じ列に欲しい

3点目は下記の画像ダウンロードの部分に係る部分ですが、

1つのGASで複数のGoogleSheetを扱う場合にはあり得るかと思います。


画像のダウンロード


昨年までは・・・

さて、GoogleSheetへの連携まで出来たら、今度は画像のダウンロードがしたいのですが、

実は、昨年までは取得したURLを叩けば(誰でも)画像がダウンロードできました:stuck_out_tongue:

[ ダウンロードURL ]

https://admin.typeform.com/form/results/file/download/{HOGEHOGE}/{FUGAFUGA}/{PICTURE}

※今はアクセスしても、ログイン画面が表示されるだけです。

呆然とする穴っぷり(なので、Qiitaにも書けずにいました)だったのですが、

さすがに気づいたらしく、現在はAPIキーなどが必要になりました。


2018年7月現在の仕様

セキュリティが強化されたのはユーザとして喜ばしい限りなのですが、


  • ユーザが画像アップロード ~ 特定のフォルダに、特定のファイル名で保存

を自動化できたのが、TypeFormを使う最大のメリットだったので、自動ダウンロードできなくなると結構なダメージです。

そこで、サポートに問い合わせたり、APIリファレンスを見たり、ひたすらResponseを取得してみた結果

取得できるURLが分かりました。

[ ダウンロードURL ]

https://api.typeform.com/v0/form/{form_id}/fields/{fields_id}/blob/{PICTURE_NAME}?key={API_KEY}

※ v0 っていうのが不安なんですが。v1 のAPIあるし・・・。

※ いつまでダウンロードできるかは不明です。

form_id, fields_id について、またAPI_KEYの取得方法はドキュメントにありますので、必要なかたはご参照ください。

ダウンロードできなくて困っている方の参考になれば幸いです。