
Integromatで毎月1日にシナリオを自動実行してkintoneのアプリにレコードを追加する
こんにちは、エミックの松尾です。FileMaker Pro 東京ユーザーズミーティングのある日の午前中にカスタムWeb勉強会というFileMakerとWebに関する勉強会を開催していますが、4月以降は勉強会の形式や曜日、場所を変えて開催する予定です。詳細は決まり次第ご案内したいと思います。今回の記事では、Integromatで定期的にシナリオを自動実行して毎月1日にkintoneのアプリにレコードを追加する方法について記しています。
kintone REST APIでデータ連携が可能
kintoneには、データ連携用のAPIとして、“kintone REST API”と呼ばれるAPIが用意されています。
kintone REST APIを使えば、外部のサービスやプログラムなどからkintoneのアプリにレコードを追加することが可能です。レコードの追加だけでなく、レコードの取得・更新・削除、ファイルのアップロード・ダウンロード、アプリ・スペース・フォームの情報を取得する処理なども行うことができます。
kintoneにはスタンダードコースとライトコースの2種類のコースが用意されていますが、kintone REST APIはスタンダードコースで利用可能です。
kintoneでAPIトークンを生成する
Integromatで定期実行用のシナリオを作成する前に、kintone REST APIの認証に使用するAPIトークンをkintoneで生成します。
APIトークンはkintoneアプリの設定画面で生成できます。アプリの設定画面において[設定]タブにある[APIトークン]をクリックした後に[生成する]ボタンを押すという手順になりますが、手順の詳細についてはkintone ヘルプをご参照ください。
今回は、生成されたAPIトークンに対して、「レコード追加」の操作のみ許可するようにチェックをつけます。APIトークンを生成した後、アプリを更新することを忘れないようにしてください。
なお、生成したAPIトークンは第三者に知られないように注意してください(本記事のスクリーンショットでAPIトークンの文字列を確認できますが、記事公開時に削除しています)。
IntegromatでHTTPリクエストを送信するシナリオを作る
Integromatは、https://www.integromat.com/で登録でき、無料のプランも用意されています。プログラミングに関する知識がなくても、各種Webサービスを簡単に連携させることができます。kintoneとSlackを連携させる例について解説した記事を以前書きましたので、よろしければこちらの記事もご参照ください。
Integromatでは「シナリオ」を作成することでサービス連携処理のための設定をしていきます。シナリオを作成するには、ログイン後のダッシュボード画面で[Create a new scenario]をクリックします。
今回はkintone REST APIを用いるHTTPリクエストを送るシナリオを作成していきます。「HTTP」と入力してサービスを絞り込んだ後、「HTTP」をクリックして選択します。その後、右上にある[Continue]ボタンをクリックして次の画面に進みます。
真ん中に表示されている[?]をクリックした後、[HTTP]をクリックします。
次に[Make a request]をクリックします。
[URL]欄に単一のレコード登録に使うURIを入力します(例:「https://example.cybozu.com/k/v1/record.json」)。「example」の代わりに実際に使用しているkintoneのサブドメインを指定してください。
今回の例ではレコードを新規に登録するので、HTTPリクエストメソッドを指定する[Method]の値を「GET」から「POST」に変更します。
[Add a header]をクリックした後、HTTPヘッダー名に相当する[Name]に「X-Cybozu-API-Token」と入力し、[Value]にkintoneで生成したAPIトークンを入力します。HTTPリクエストの認証情報を入力した後、[Add]をクリックします。
APIの制約によりContent-Typeに「application/json」を指定する必要があるため、[Body type]の値を「Raw」に変更した後に、[Content type]の値を「JSON (application/json)」に変更します。
次に、「{"app": "3", "record": {"文字列__1行_": {"value": "{{formatDate(addDays(now; -1); "交通費(YYYY年M月)")}}"}}}」という文字列をコピーして、[Request content]欄にペーストします(アプリのIDが「3」、フィールドコードが「文字列__1行_」の場合)。
アプリIDやフィールドコードが上述の例と異なる場合には適宜書き換えてください。
Integromatで作成したシナリオが動作するか確認する
[OK]ボタンを押した後、[Run Once]をクリックして、作成したシナリオがうまく動作するか確認します。実際にkintoneでレコードが作成されているか確認しましょう。
Integromatのスケジュール設定でシナリオを定期実行
Integromatのスケジュール設定でシナリオを定期実行するには、HTTPモジュールの左下に表示されている時計のアイコンをクリックします。今回の例では、[Run scenario:]の値を「At regular intervals」から「Days of the month」に変更します。
続けて[Days]のチェックボックスにおいて「1」にチェックをつけます。[Time]についてはシナリオを実行させたい任意の時刻に変更します。テストの際には、本日の日付や検証しやすい時刻に設定すると良いかもしれません。
日時設定後に[OK]をクリックします。その後、定期的に実行されるようにスケジュールに登録します。[Run once]の下にある[SCHEDULING]をクリックして[OFF]から[ON]に変更します。
[SCHEDULING]の右にあるフロッピーディスクのアイコンボタンを押して、念のためシナリオを保存します。これで設定は完了です。
今回は毎月1日にスケジュールを実行する例を説明しました。1日が休みの場合には翌営業日に処理を実行するように調整したい場合もあると思いますが、そのような場合の設定方法については別の機会に解説したいと思います。
まとめ
Integromatで毎月1日にシナリオを自動実行してkintoneのアプリにレコードを追加する方法について解説しました。Integromatのスケジュール機能を利用すると、任意のタイミングで繰り返しシナリオを自動実行させることができます。Integromatのスケジュール機能とkintone REST APIを組み合わせて使うことで、定期的にkintoneアプリのデータを処理することが可能になるので、活用の幅がより広がるはずです。