FileMakerエンジニア
以前公開した「DropBoxでの外部保存」のPart2で
今回はGoogle Drive APIを使用した外部保存をやっていきます。
Google Driveは多くの人々が日常的に利用しているサービスですが、
別の外部ストレージサービス、
例えばDropboxやAWS S3などを使うと、
どうしても管理が複雑になりがちです。
特に、複数のツールを使い分けることになると、
管理場所が分散してしまったり、
追加の料金が発生する可能性があり、
ツールの一貫性が失われてしまうこともあります。
こうした問題は、業務の効率性や運用コストにも影響を与えるため、
できるだけ避けたいところです。
そこで今回は、
既にGoogleサービスを使っている場合に
外部ストレージの管理が一元化できる方法について
詳しく説明していきたいと思います。
※この記事で出てくるトークン等は使用不可になっています。
目次
Google Driveとは?
Google Driveは、DropBoxと同じく
クラウド上でファイルを保存、管理、共有できるサービスです。
しかし、DropBoxでは無料枠で利用しようと思うと
2GBまでの利用でかなり少ない容量です。
Google Driveは無料枠で15GBまで利用ができるといった
違いがあります。
また、有料のプランに変更したとしても
Google One(後ほど説明いたします)の方が安価になります。
ただし、
Google Driveだけでなく、
GmailやGoogleフォトも含めた合計の容量となりますので
その点は気をつけないといけません。
無料プランと有料プランの違い
Google Driveは無料でGoogleアカウントを開設した時点で
15GB使用できるようになっています。
しかし、15GBで足らない人はGoogle Oneという有料サービスを
使用することで容量を増やすことが可能です。
Basic
月額250円(年間3,000円)100GBの容量を利用できます。
Premium
月額1,300円(年間15,600円)2TBの容量を利用できます。
AI Premium
月額1,300円(年間15,600円)2TBの容量を利用できます。
1.5 Pro モデルを使用した Gemini Advanced を利用可能
基本プランは上記になりますが
もう少し細かく設定することも可能で自分に合った容量を
選択できるのもGoogleの良いところです。
また、契約時期によれば割引していることもありますので
期間内だけもっとお安い場合もあります。
※料金に関しては2024/10/24時点の情報になります。
Google Drive APIを使用するには
Googleのアカウント作成
もちろん使用するにはGoogleアカウントが必要になります
Googleのアカウント作成方法は
こちら
をご確認ください。
Google APIの使用するための設定
では、ここからがAPIを使用するための本題です。
まずは
Google Cloud Platformと検索してください。
おそらく一番上に下の画像のようなサイトが表示されます。
プロジェクトの作成
ではこちらを開くと上部ナビゲーションにコンソール
とあると思いますので
開いてみてください
すると、下の画像のような
画面が表示されますので
プロジェクトの選択を行います。
次に新しいプロジェクトを押します。
プロジェクト名(任意)
場所(ある場合)を選択し作成を押します。
作成ができたら再度
プロジェクトの選択をし
先ほど作成したプロジェクトを開きましょう。
OAuthの設定
次にAPIを使用するために必要な
OAuthの設定をしてきます。
サイドバーにあるOAuth同意画面をクリックしてください。
するとOAuthの同意画面の設定が開きますので
外部を選択し作成します。
アプリ名
ユーザーサポートメールアドレス
デベロッパーの連絡先情報
の3つを入力し保存し次へを押します
画像のように
DriveAPIなどのGoogleのサービス名で登録しようとすると
エラーが返ってきますので
注意してください。
保存し次へ行くとスコープの設定がありますが
今回は設定しませんので
このまま次へいきます。
次にテストユーザーの設定もありますが
今回は設定しませんので次にいきます。
最後に内容を確認しダッシュボードに戻り
アプリを公開にします。
認証の設定
サイドバーの認証情報をクリックしてください。
画面が切り替わったら
認証情報を作成をクリックし、OAuthクライアントIDを選択します。
アプリケーションの種類を
テレビと入力が限られたデバイス
を選択し
名前は任意の名前を入力し作成をクリックします。
するとクライアントIDとクライアントシークレットが表示されるので
これをメモしておきましょう。
APIを利用する準備 2
次からは実際に認証をして設定を進めていきます。
以下のcurlのClientIdを先ほどメモしたクライアントIDに変換し
APIを叩きます。
検証URLを取得
curl -d "client_id=[ClientId]&scope=https://www.googleapis.com/auth
/drive.file" https://oauth2.googleapis.com
/device/code
これを実行すると
{
"device_code": "AH-1Ng2gwWBcOR9-mupNMCAScMa9MOk28nqRil9k_pw9Wl96q8kXqFqqRw9Ea0FvPiQLcjV5HfeQbEfgbHUdUu4XZx33NXHL6nNg",
"user_code": "WLF-RBL-RSP",
"expires_in": 1800,
"interval": 5,
"verification_url": "https://www.google.com/device"
}
このようなJSONがJSONが返ってきますexpires_inに1800とありますので
このJSONの有効期限は30分です。
ではverification_urlにあるURLにアクセスしてみましょう。
アクセスするとコードの入力を求められるので
user_codeを入力します。
するとアクセスが求められるので続行を押します。
デバイスを接続しました
と表示されれば完了です。
次はリフレッシュトークンを取得していきます
以下のcurlのClientIdとClientSecretを
先ほどメモしたクライアントIDとクライアントシークレットに変換し
DviceCodeを検証で取得したdvice_codeに変換し
APIを叩きます。
リフレッシュトークンの取得
curl -d "client_id= [CientId] &client_secret= [ClientSecret] &
device_code= [DviceCode] &
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code"
-H "Contenttype: application/x-www-form-urlencoded"
https://oauth2.googleapis.com/token
これを実行すると
{
"access_token": "ya29.a0AcM612wYGn8uXf08G-lqAqh7Qb1a1FCXZ1hBu1Uc-xQeskD2mJ7FvLybbkEoikdooQP2zBCDFWGqQP89mvKu4G_XKjHXRSbJWuWcwklaV_aqLdZSFH5pqSx8GlNRFuC3lDq3b49ybxH6CBW7Qdno5nzA-1t6K2RD2a58s2srCgYKAccSARISFQHGX2MiD14iZ95em3U-leQFF96KVQ0175",
"expires_in": 3599,
"refresh_token": "1//0e2GcTgmEoFi1CgYIARAAGA4SNwF-L9IrVJ2vej4TaAabWpW9WjHwaGz25O5LNBnYkqWC_GU4Y-wo7iBIvVHQqkTOEjIifdXVrXQ",
"scope": "https://www.googleapis.com/auth/drive.file",
"token_type": "Bearer"
}
このようなJSONが返ってきますexpires_inに3599とありますので
このJSONの有効期限は59分です。
この時間が切れたら
アクセストークンの有効期限が切れますので
リフレッシュトークンで再取得しましょう。
ファイルをGoogle Drive APIでアップロードする
これでアクセストークンがいつでも取得できるようになったので
Google Driveにアップしていってみましょう。
以下のAccess Tokenを取得した
アクセストークンに入れ替え
FileNameをファイル名
@移行をファイルパスを選択します。
curl -X POST -L "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart" \
-H "Authorization: Bearer AccessToken" \
-H "Content-Type: multipart/form-data" \
-F "metadata={name : 'FileName'};type=application/json;charset=UTF-8" \
-F "file=@/path/to/your/file"
これを実行すると
{
"kind": "drive#file",
"id": "118Tb7nntREmfK73MzSFAabKmzp65jSZj",
"name": "test.png",
"mimeType": "image/png"
}
このようなJSONが返ってきて
ファイル名やidなどが返ってきます。
idを使用することでファイルの検索やダウンロードが可能となります。
まとめ
いかがでしたでしょうか。
GoogleのAPIには本当にたくさんのAPIがあり
様々なサービスと組み合わせることが可能です。
しかし、GoogleのAPIは認証や
スコープなど設定がかなり多くあり
扱いにくい傾向があります。
また、DropBox同様GoogleのAPIは少し難易度が高く専門性が高くなってきます。
今後別ドライブに保存を検討している
現在別のドライブに保存していおりGoogleにまとめたい
などあればぜひお問い合わせください。
また、株式会社ブリエではFileMakerを使った業務改善を行なっており
APIをつなげてほしい、業務改善がシステムでできないかを検討している、
などあれば是非一度お問い合わせください。
多岐にわたる業種での経験を経て、現在はFileMakerを中心に活躍中のエンジニアです。ローコード開発を得意としながらも、Django、React、Flutterなどの技術にも挑戦し、幅広い開発スキルを習得。常に自分の技術を磨き、より良いソリューションを提供できるよう、継続的にスキルアップを図っています。多彩な技術を駆使して、クライアントのニーズに応える柔軟性と、迅速かつ効果的な開発力が強みです。