◇はじめに
本記事は、「kintone Advent Calendar 2024」の3日目の記事です。
先日はADVENTARのkintoneアドカレに記事を載せましたが、続いて今回はQiitaアドカレでも記事を書いていきます。
今回はkintoneのレコードを外部から制御できる kintone REST APIをiPhoneショートカットを使って呼び出してみるという記事です。
◇環境等
- 使用デバイス
- iPhone SE3
- OS:iOS18.1
- WindowsPC
- Windows11
- iPhone SE3
- 使用アプリ
- ショートカットアプリ
- 使用ツール・サービス
- Edge
- kintone(PCブラウザ経由)
- Postman
◇最終的にできたもの
iPhoneショートカットをタップして、名前を入力すると、kintoneアプリ上に入力したデータをレコードとして追加できます。
モバイル版kintoneアプリを使用せずにREST APIを使ってレコードを登録する形になります。
◇実装手順
- レコード登録用のkintoneアプリの作成
- REST API用のトークン発行
- Postmanを使ったREST APIの動作確認
- iPhoneショートカットの作成
の順で記載していきます。
記事書いてから気づきましたが、kintoneの公式ドキュメントで上記の1~3までを行った記事が公開されていました。
自分が書いた部分は今更消すのもあれなので、そのまま記載しています。
適宜公式の記事も参照ください。
kintoneアプリ登録
まずはレコード登録用のkintoneアプリを作成します。
なお、kintoneは開発者向けのkintone開発者ライセンス(12か月間利用可能)やお試しライセンス(30日間利用可能)があるため、契約をしなくてもアプリ作成を試せます。
※今回作成したアプリもkintone開発者ライセンスでつくってます
作成したライセンスでkintoneにログインしたら、アプリの作成を行います。
なお、ユーザーの追加やスペースの追加方法については、公式サイトやヘルプサイトにたくさん情報があるため、詳細は割愛します。
ポータル上からアプリを作成アイコンをクリックして、「はじめから作成」を選択します。
アプリの名前は好きな名前を入力します。
(自分の環境ではREST APIテスト レコード登録アプリにしてます)
次に、フォームタブから文字列(1行)
フィールドをフォーム画面上にドラッグして配置します。
配置したフィールドの設定画面から赤枠の箇所を変更します。
今回はフィールド名、フィールドコードともにName
にしています。
ここまできたら、一旦アプリを公開します。
公開されたアプリに試しにレコードを追加します。
右上のレコード追加の+
ボタンをクリックします。
入力項目はName
フィードだけなので、適当に名前を入力して保存します。
一覧に先ほど登録したレコードが追加されていればOKです。
APIトークン発行
次に、先ほど登録したアプリのレコードを外部から制御するために、APIトークンを発行します。
APIトークンの作成方法は公式ヘルプも参照ください。
先ほど作成したアプリの設定画面から、⚙
アイコンを選択し、設定タブ内にあるAPIトークンを選択します。
APIトークン設定の画面左上にある生成する
ボタンをクリックし、APIトークンを発行します。発行されたAPIトークンはレコード追加
のチェックが有効ではないので、チェックを入れて有効化します。
これでAPIトークンの準備ができたので、改めてアプリを公開します。
Postmanでの検証
APIトークンが取得できたので、いよいよ外部からレコードの登録を試します。
いきなりiPhoneショートカットで試した場合、処理がうまくいかなかった場合のデバッグが難しいため、まずはAPIプラットフォームのPostmanを使ってレコードの登録を試してみます。
Postmanに関する情報は、Postman社員の方が過去に実施した際のセミナー資料を色々公開しているので、こちらを参考にしてください。
自分も以前にPostmanでSwitchBotを制御する記事を書いたりしてます。
まず、新しいコレクションを作成し好きな名前を付けます。(自分はkintone REST API
という名前に設定)
その次に変数タブに移動し、3つの変数を追加します。
-
baseUrl
:レコード登録用のURLを入力します
以下のURLのxxxxxxx
の部分を個人の環境に合わせます
https://xxxxxxx.cybozu.com/
-
apiToken
:先ほど発行したトークンを入力
-
appId
:最初に登録したアプリのIDを入力
アプリIDは、そのアプリを開いた時のURLの数字が該当します。
入力が完了したら、右上の保存ボタンをクリックします。
次に、コレクション内にAPIのリクエストを追加します。
名前を適当に決めて(自分は1件のレコードを登録する
という名前に設定)、リクエスト方法をPOST
に変更します。
URL部分は以下のように入力します。ここで、{{baseUrl}}
は先ほど登録した変数を表します。
{{baseUrl}}k/v1/record.json
ヘッダータブでは、公式ヘルプを参考にし下の画像のように入力します。
APIトークンは先ほど作成した変数を使います。
ボディのタブでは、Raw
モードのJSON
を選択し、以下のように入力します。
名前は好きな値を入力して問題ないです。
画像では、postmanという名前を設定しています。
{
"app": {{appId}},
"record": {
"Name": {
"value": "xxxxxxx"
}
}
}
ここまできたら、APIリクエストの内容を保存し、送信ボタンをクリックします。
少しすると、画面下側のレスポンス部分が更新されます。
ここで、赤枠で囲んだ部分が200 OK
と表示されていれば成功です。
kintoneアプリ側に戻って一覧表示のページを更新すると、Postmanからリクエストしたレコードが追加されています。
iPhoneショートカットの作成
Postmanを使ったレコード登録ができたので、今度はiPhoneショートカットを使ってレコード登録に挑戦します。
なお、iPhoneショートカットを使ったHTTPリクエストのPOST方法は以前記事を書いていますので、細かい部分はこちらの記事をご覧ください。
ショートカットアプリを開き、新規のショートカットを追加して好きな名前やアイコンを設定します。
最初に、レコードに登録する名前を入力するアクションを追加します。
登録する名前を入力してください
の部分は入力するウィンドウのタイトルなので、自由に設定できます。
なお、テキストの項目は選択すると、数字やURL、日時データなどを選ぶことも可能です。(今回はテキストのままでOK)
次にkintoneにHTTPリクエストするためのアクションを追加します。
URLの内容を取得
アクションを利用します。取得となっていますが、実際にはPOSTも可能なアクションです。
入力項目は先ほどPostmanで登録した内容を参考に入力していきます。
ボディの部分については、階層構造となっています。
階層構造の部分(record
- Name
- value
)については、フィールドタイプを辞書にすることで階層でのデータ入力が可能になります。
こちらも参考にしてください。
{
"app": {{appId}},
"record": {
"Name": {
"value": "xxxxxxx"
}
}
}
最後にリクエスト結果を表示するためのアクションを追加します。
表示内容はURLの内容
を選択してください。
ここまでで、iPhoneショートカットが作成できましたので、実際に動作確認してみます。
◇動作確認
作ったショートカットを実行して、実際にレコードを登録してみます。
ショートカット一覧画面から、先ほど作成したショートカットをタップします。
タップ後、画面上部に登録するレコードのNameを入力するウィンドウが表示されるので何か文字を入力します。(自分はiPhone
という名前に設定)
完了ボタンを押すと、アクションが進み、最終的に以下のような画面が表示されるので、完了ボタンをタップして終了です。
※Postmanの時のように、HTTPレスポンスのステータスコードを表示したかったのですが、結局出し方がわからず断念してます
kintoneアプリ側に戻って一覧表示のページを更新すると、今回のレコードが追加されています。
◇おわりに
kintoneはスマートフォン用のアプリも提供されているため、そのアプリを使えばレコードの追加は可能です。
ただ、送るデータの入力項目がほぼない、入力する内容がほぼ決まっているといったシチュエーションでは、今回のようにショートカット経由でレコード登録すると少し手間が省けると感じ、今回の記事を書いてみました。
今回はテスト用のアプリでしたが、例えば毎日の体調チェック(選択肢を用意しておき、それを選ぶだけのアプリなど)のようなアプリとかだと使えるかもしれません。
また、iPhoneショートカットはオートメーションの機能もあるため、これを活用することで自動化といったことも可能です。(できれば今年のアドカレ期間内にその辺の記事も書きたい・・・)
乞うご期待!!
(2024/12/11 追記)
別記事にて、iPhoneショートカット機能のオートメーションを使った自動化を試してみました。
良ければこちらもご覧ください。