kintoneのレコードを取得
この記事では、kintoneのレコードを一括取得する方法を紹介します。
アクションの実行には、kintoneのコネクションが必要です。
kintoneコネクションの登録方法については、以下をご参照ください。
参考:kintoneと連携する
Kintoneのレコードを取得する
kintoneGetRecords(レコードを一括取得する)アクションを使用することによって、kintoneのレコードが取得できます。
レコード取得時には、出力するフィールドを絞り込んだり、クエリによって条件を満たすレコードのみを出力したり、レコードの順番を並び替えたりすることも可能です。
以下より、方法を紹介します。
フィールドやクエリを指定しない場合、
以下の設定のみで、あるアプリの全レコード・全フィールドを出力できます。
- KintoneGetRecordsを設定します。
- プロバイダーIDを直接入力するか、ピッカーから選択します。
- アプリIDを直接入力するか、ピッカーから選択します。
出力するフィールドを絞り込むことも可能です。
「フィールド」に、出力したいフィールドコード(フィールド名ではありません)を配列形式でご入力ください。
ここでは、最初の画像のアプリから「都道府県」「行き先」フィールドのみを出力してみます。
※ただし、レコードidは必ず出力されます
- KintoneGetRecordsアクションの詳細設定を開きます。
- 「フィールド」に以下を入力します。
["都道府県","行き先"]
出力するフィールドを「都道府県」「行き先」とした上で、以下条件を満たすレコードのみを抽出してみます。都道府県が「兵庫県」または「青森県」と完全一致するレコード
- KintoneGetRecordsアクションの詳細設定を開きます。
- 「フィールド」に以下を入力します。
["都道府県","行き先"]
- 「クエリ」に以下を入力します。
都道府県 = "兵庫県" or 都道府県 = "青森県"
クエリの詳細な指定方法は、cybouzu社公式の案内をご参照ください。
以下3つの方法があります。
- アプリの設定画面から確認
- kintoneUpdateRecordsアクションから確認
- スプレッドシートにフィールドコードとフィールド名を一括で出力
参考:kintoneのフィールドコードとフィールド名の一覧をスプレッドシートに出力
# レコードを一括取得する +kintone_get_records_1: action>: kintoneGetRecords provider: '' appId: '' fields: [] meta: display: # レコードを一括取得する +kintone_get_records_2: action>: kintoneGetRecords provider: '' appId: '' fields: ["都道府県","行き先"] meta: display: # レコードを一括取得する +kintone_get_records_3: action>: kintoneGetRecords provider: '' appId: '' fields: ["都道府県","行き先"] query: '都道府県 = "兵庫県" or 都道府県 = "青森県"' meta: display:
取得した値をスプレッドシートやExcelに貼り付ける
kintoneGetRecordsアクションのアウトプットを「加工」すると、
スプレッドシートやExcelへの貼付けが可能となります。
この「加工」は、ConvertJSONToArrayアクションによって可能です。
詳細は、ConvertJSONToArrayの記事をご参照ください。
参考:ConvertJSONToArray(JSONを配列に変換)
レコードの添付ファイルをダウンロードする
kintoneGetRecordsアクションでは、レコードの添付ファイルを直接的にダウンロードすることができません。
添付ファイルをダウンロードする場合は、ブラウザ上でkintoneにアクセスし、ダウンロードを実行するコード(JavaScript)を実行する必要があります。
ここでは、この添付ファイルをダウンロードするワークフロー(コピペ可能)を紹介します。
本タブ下部にあるコード(YAML)エディタモードからコピペいただけます。(コピペ方法はこちら)
実際に使用する際には、以下3つの情報を事前にご準備ください。
- アプリのAPIトークン(取得方法はこちら)
- サブドメイン(URLから取れます。https://ここがサブドメイン.cybozu.com/)
- 添付ファイルのフィールドコード(アプリの設定画面から確認可能です)
上記3つの情報は、ワークフロー上部の3アクション(変数に保存)の該当する箇所の値にご指定ください。
また、ワークフローのkintoneGetRecordsアクションのプロバイダIDやアプリIDには、ご自身の環境のものをご指定ください。
# 変数に保存_kintoneのサブドメイン https://ここがサブドメイン.cybozu.com/ +store_value_7: action>: StoreValue key: subdomain value: 'サブドメイン' # 変数に保存_アプリのAPIトークン +store_value_1: action>: StoreValue key: kintoneToken value: 'APIトークン' # 変数に保存_添付ファイルのフィールドコード +store_value_2: action>: StoreValue key: fileFieldCode value: '添付ファイルのフィールドコード' # レコードを一括取得する +kintone_get_records_1: action>: kintoneGetRecords provider: kintone_1170648c1741c72a439c appId: 5 fields: [] meta: display: provider: type: chip label: 'kintone (8vekw.cybozu.com)' icon: kintone # 各要素について繰り返す_レコード +for_each_1: for_each>: record: +kintone_get_records_1 _do: # ブラウザを開く_使用しているKintoneのログインページ(CORS回避のため) +open_browser_1: action>: OpenBrowser url: 'https://${subdomain}.cybozu.com/login' lang: 'ja-JP' headless: true useShadowDomSelector: false # 各要素について繰り返す_添付ファイル +for_each_2: for_each>: fileKeyData: ${record[fileFieldCode]} withIndex: hoge2 _do: # ページ内でJavaScriptを実行する_既存ファイルのダウンロード +inject_script_1: action>: InjectScript browser: +open_browser_1 code: "const fileName = \"${fileKeyData.name}\";\nconst url =\n \"https://\" +\n \"${subdomain}\" +\n \".cybozu.com/k/v1/file.json?fileKey=\" +\n \"${fileKeyData.fileKey}\";\nconst xhr = new XMLHttpRequest();\nxhr.open(\"GET\", url);\nxhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\nxhr.setRequestHeader(\"X-Cybozu-API-Token\", \"${kintoneToken}\");\nxhr.responseType = \"blob\";\nxhr.withCredentials = true;\nxhr.send();\nxhr.onreadystatechange = function() {\n // 通信が正常に完了したか確認\n if (xhr.readyState === 4 && xhr.status === 200) {\n const xhrBlob = new Blob([xhr.response], { type: xhr.response.type });\n const blobUrl = URL.createObjectURL(xhrBlob);\n const a = document.createElement(\"a\");\n document.body.appendChild(a);\n a.download = fileName;\n a.href = blobUrl;\n a.click();\n a.remove();\n URL.revokeObjectURL(blobUrl);\n }\n};\n" returnValue: false # ブラウザを閉じる +close_browser_1: action>: CloseBrowser browser: +open_browser_1 # ダウンロード完了を待つ_タイムアウトはご調整ください +wait_for_download_1: action>: WaitForDownload timeout: 10000 # ダウンロードファイル一覧 +get_download_files_1: action>: GetDownloadFiles order: DESC sort_by: CREATED