FileMakerにGmailを統合する

今回は、FileMakerのREST API対応によって可能になった応用例の一つとして、Gmailとの統合についての記事を紹介します。

この記事は、2018/7/14のFM-Chubuの懇親会の場で翻訳のリクエストを受けて作成したものです。面白い記事を紹介いただき、ありがとうございました。
「面白そうな記事がある」、「この記事を日本語で読みたい」などの要望がありましたら、ぜひTwitterで@nomfjmtにメンションしてください。


dbservices

FileMaker Gmail Integration

(元記事はこちら)

Brendan McBride
2018/7/10

Googleは2016年に、Gmailのアクティブユーザが毎月10億人以上であることを公表しました。多くの企業では、Gmailを活用して企業ドメイン名を使用してアカウントを設定しています。もしあなたがFileMakerのCRM(顧客関係管理)システムを使用しているか将来その予定がある場合、電子メールでのやりとりをシステムに記録することで、顧客とのコミュニケーションの透過性が向上します。この記事では、GmailからFileMakerシステムにHTMLメールを直接インポートする方法を紹介します。

無料のデベロッパーアカウントを作成する

統合のための第一歩は、(まだ持っていない場合)Google Developers Consoleでプロジェクトを作成することです。プロジェクトを作成したら、Gmail APIを有効にします。有効になったら、メニューから APIとサービス > 認証情報に進みます。OAuth 2.0クライアントIDとsecretが必要です。まだ作成していない場合は、ここでこれらの認証情報を作成し、OAuth認証画面を設定する必要があります。HTTPリクエストを使用するので、「Webブラウザクライアントを介してAPIにアクセスする」にチェックします。また、リダイレクトURIをhttps://dbservices.com (または有効なウェブサイトで、他のサイトにリダイレクトされないもの)に設定します。

Google認証

これは認証のためのランディングページとしてのみ使用され、それ以上に特別な設定をする必要はありません。クライアントIDが作成されたら、クライアントIDとクライアントsecretをソリューションにコピーします。クライアントIDとクライアントsecretの組み合わせは、エンドユーザのアカウントにアクセスするソリューションの承認に使用されるため、クライアントsecretは大事に隠しておいてください。

GoogleとOAuth 2.0による認証

API情報を取得したら、あなたのソリューションをGmail APIで認証します。Googleは、認証方法を確認するためにOAuth 2.0 playgroundを提供しています。あるいはこの記事にリンクをつけたサンプルデータベースで参照することもできます。上位レベルでは、ソリューションを認証するために、ユーザをAPI認証のエンドポイントのWebビューアに配置します。ユーザは自分の認証情報でログインし、ソリューションを接続するアカウントを選択するよう求められます。認証が通ると、認証リクエストで渡されたリダイレクトURIに指定したアドレスに送信されます。ユーザが新しいアドレスにリダイレクトされると、アドレスにURLエンコードされたパラメータが設定されます。このパラメータは次の手順に必要なコードになります。

変数を設定 [ $code ; 値: "https://dbservices.com/?code=058baec5-cfd7-42ae-b3ea-c0683fa4b6b5" ]

コードを抽出したら、コードとIDとsecret情報を使用してアクセストークンを取得し、それを使用してAPIリクエストを行います。

リクエストの作成とレスポンスの解析

Gmail APIにリクエストを送る前に、 JSONcURLを理解することが重要です。 Gmailからメールをインポートするために必要となるのは、List MessagesGet MessageGet AttachmentModify Messageの4つのリクエストです。与えられたクエリに基づいてすべてのメッセージを取得するには、List Messageリクエストを使います。たとえば特定のタイムスタンプ以降のすべての電子メールを検索する方法は以下のとおりです。

変数を設定 [ $cURL ; 値: "-X POST
                               --header \"authorization: Bearer XXXXXXX\"" ]
URLから挿入 [ 選択 ; ダイアログあり: オフ ; $result ; ""https://content.googleapis.com/gmail/v1/users/me/messages?q=after%3A" & $startTimestamp" ; $cURL ; URLを自動的にエンコードしない ]

タイムスタンプはUNIX形式でフォーマットすることに注意してください。リクエストが成功すると、レスポンスとしてメッセージIDのリストがJSONでエンコードされた形式で返されます。次に、JSONGetElement()関数を使用してレスポンスから必要な情報を引き出します。

{
 "messages": [
  {
   "id": "1234567890",
   "threadId": "8675309"
  }
 ],
 "resultSizeEstimate":1
}

たとえば、次の関数を使用してIDを取得できます。

変数を設定[ JSONGetElement ( $result ; "messages[0]id") ]

メッセージのIDを取得できたら、Get Messageリクエストを使用してメッセージの詳細を取得します。一部のメッセージには添付ファイルIDが含まれます。その場合はGet Attachmentリクエストを使用します。最後に、メッセージを既読としてマークするか、アーカイブするか、メッセージの格納場所を変更する場合、Modify Messageリクエストを使用します。Modify Messageリクエストは他のものと少し異なり、GETではなくPOSTであるため、cURLオプションで追加の情報をJSON形式で渡す必要があります。

変数を設定 [ $cURL ; 値: "-X POST
                               --header \"authorization: Bearer XXXXXXX\"
                               --header \"Content-Type: Application/json\""
                               --data @$modifyJSON" ]
URLから挿入 [ 選択 ; ダイアログあり: オフ ; $result ; "https://www.googleapis.com/gmail/v1/users/me/messages/" & $messageID & "/modify" ; $cURL ; URLを自動的にエンコードしない ]

APIの一部がやや難しいので、付属のサンプルファイルを一度見てみることをお勧めします。たとえば、メッセージの詳細を取得する部分は少し複雑です。必要な部分の情報を取得するために、レスポンス内容を走査するループを実装する必要があります。

まとめ

FileMakerアプリケーションにGmailを統合することで、会社の取引先とのやりとりに関して、業務の可視性が大幅に向上します。さらに支援が必要な場合や、Gmailアカウントを取得してFileMakerと統合する方法について詳しく知りたい場合はお気軽にお問い合わせください。

DBServicesは、FileMakerライセンスの正規販売代理店です。
FileMakerソフトウェアのアップグレードについてお問い合わせください。

 

FileMakerとGmailの統合データベースをダウンロードするには、元記事の入力フォームに必要事項を記入してください。
(必要事項を入力すると[DOWNLOAD FILE]ボタンが表示されます。)

 

Leave a Reply