【FileMaker】cURLでファイル内容をダウンロードする

単純に、FileMakerの[URL から挿入](https://help.claris.com/ja/pro-help/content/insert-from-url.html)スクリプトステップを使って、サイトに公開されているページや、どこかのドライブに置いてあるファイルを取得(ダウンロード)する方法です。

この記事は、２部構成です。
今回は、単純にウェブ上にあるファイルをFileMakerへダウンロードします。
次回は、sftpをcurlから使ってファイルのダウンロードを行います。

# 実行環境
FileMaker Pro ver.19.6.3で実行していますが、cURLの扱えるようになったFileMaker Pro ver.16以上でお試しください。

# curlがちょっと不安な方
こちらで、注意点をまとめています。
合わせてご覧ください。

https://qiita.com/tyuma/items/7f0c161509f3c5c78257


# サイトのページを拾ってくる
こちらは単純にcurlのオプション、"-O"を使ってサイトのhtmlをダウンロードします。
ここでは、sftpGetDataというテキストフィールドに指定したサイトのhtmlをダウンロードしました。
画面上部にある、sftpボタンにスクリプトステップを書いています。
![スクリーンショット 2023-02-21 16.27.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/3bbecb10-fef5-cde7-7d49-cc20d514eac5.png)
画面下には、取得したhtmlデータをWebビューアツールで表示しています。

## curl文
```
curl -O <取得したいページのURL>
```
https以下のURLは、取得したいページです。
これを、FileMakerの"URL から挿入"に当てていきます。

## URL から挿入
curl文同様、たった１行で解決できるの、さすがFileMakerですよね〜
![スクリーンショット 2023-02-21 16.33.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/3cba0601-da99-84a1-082e-697c6780ff9f.png)

では、これをベースに違うこともやってみましょう。


# ドライブのファイルの内容を取得する
ファイル自体をダウンロードするのではなく、内容を取得します。
今回は、Google DriveでWeb公開されているスプレッドシートを取得します。

## 前準備

### Web公開
Google DriveのWeb公開は、「ファイル」→「共有」→「Web公開」でできます。
![スクリーンショット 2023-02-21 16.41.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/01a5d438-9cb7-6c36-ec55-038701c8daa3.png)

:::note alert
できますが、ワールドワイドに公開されるので、パブリックデータ以外の、絶対もれちゃいかんデータはこの方法は使用できません。
**個人情報漏洩だめ、絶対ダメ！！**
:::

### 他のユーザーと共有
使用範囲を限定したい場合は、「他のユーザーと共有」で「リンクを知っている全員」と共有する形もあります。
![スクリーンショット 2023-02-21 16.57.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/2026195e-95ca-90d5-4272-f7ba85803230.png)

:::note alert
ただし、こちらもURLが漏れた際のセキュリティ問題など考えることが多いので、あまりおすすめではありません。
一時的なデータの共有にとどめておいた方がいいと思います。
**個人情報漏洩だめ、絶対ダメ！！**
:::

## URL から挿入
上記URLを取得したら、先ほどの"URL から挿入"の、「URLを指定」で指定します。
そのほかは変わりありません。

### Web公開
Web公開で取得したサンプルです。
![スクリーンショット 2023-02-21 16.43.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/67b8aed0-ce6e-862a-f1bb-9e34f5c4ddb3.png)
取得したhtmlデータは解析すればデータとして使えそうですが、Webビューアツールで表示すると文字が入り切らない場合もありますね。

### 他のユーザーと共有
他のユーザーと共有した場合です。
「お使いのブラウザのバージョンはサポートが終了しました」と表示されました。
サポート対象外のブラウザであることは、Web公開でも同じと思うのですが、何かが違うんでしょう。。。
![スクリーンショット 2023-02-21 16.58.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/702991ab-9ab3-e8a7-2e2e-53a0eb535fca.png)
しかも、同じデータなのに、なぜか、Web公開とは違うhtmlが返ってきます。
cssが違うのかな？
![スクリーンショット 2023-02-21 16.58.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/f3e051e8-22df-1956-a5be-f1b267b882e0.png)

# ファイルをダウンロードする
では、最後にファイル内容の取得ではなく、ファイル自身のダウンロードをしていきます。
cURL構文はさほど変わりはありません。
ファイル自信をダウンロードする先として、オブジェクトフィールドを用意しました。
![スクリーンショット 2023-02-21 17.16.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/51a0b7f2-176e-1ad0-a4bc-3fedbca6ba1f.png)

## サイトページをダウンロードする
「サイトページを拾ってくる」と同じURLのサイトhtmlをダウンロードします。
違うのは、ターゲットのフィールドタイプです。
![スクリーンショット 2023-02-21 17.21.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/2c19fee5-e0de-4b50-d71b-946cd30f979b.png)

これで実行すると、オブジェクトフィールド：sftpGetFileにファイル自身がダウンロードできます。
試しに、デスクトップなどにも出力して確認してみて下さい。
![スクリーンショット 2023-02-21 17.15.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/e48b3d75-f9a4-ed10-e4c3-0efbba3a360e.png)

## ドライブのファイルをダウンロードする
先ほどと同じく、Google Driveのスプレッドシートでやってみましょう。
といいたいのですが、Google Driveの場合は、こちらの記事を参考にして、APIを使った方が一番手っ取り早いです。

https://qiita.com/tyuma/items/46cbb9d4e3d078e661dd

ファイル自身をダウンロードして保存したい場合もありますよね？
curlでftpやsftpを指定してファイルをダウンロードする方法は、[次の記事](https://qiita.com/tyuma/items/84c5a2982bcb9fb0a4be)に続きます。

https://qiita.com/tyuma/items/84c5a2982bcb9fb0a4be