kintone REST APIによるレコード更新が失敗する

Kintone REST APIでレコードの登録、更新をしたいのですが、

下記のエラーが出てしまいます。

{
    "code": "GAIA_LO04",
    "id": "pp4NsLRjekJtgFgXDMyA",
    "message": "フィールド「***********」の値「***********」が、ルックアップの参照先のフィールドにないか、またはアプリやフィールドの閲覧権限がありません。"
}

◇現状◇

・当該アプリの画面上からレコードの登録はできている。

・API トークン認証で、当該エラーが発生

・ユーザ認証では、エラーは発生しない。登録できる。

・ルックアップ先のトークンをカンマ区切りで追加しても登録できない。

(当該アプリのtoken, ルックアップ先アプリのtoken)

メッセージが以下に変わる。

{
    "code": "GAIA_IA02",
    "id": "ngyEhdyHD1W7wIOSCwjK",
    "message": "指定したAPIトークンは、アプリで生成されたトークンと異なります。アプリのAPIトークンの設定を確認してください。設定が正しい場合、APIトークンの設定がアプリに反映されていない場合があります。アプリの設定を更新し、APIトークンの設定をアプリに反映します。"
}

この辺りに詳しい方がいらっしゃいましたら、ご教示願います。

よろしくおねがいいたします。

こちらで動作検証した結果をもとに回答しますと、以下の原因が考えられそうです。リクエストヘッダ「X-Cybozu-API-Token」の内容をご確認いただくとよろしいかと存じます。

  • ルックアップ元アプリで生成したAPIトークンと一致するか
  • ルックアップ元アプリでAPIトークンを生成後にアプリを更新済みか
  • APIトークンの区切り文字がカンマ(,)ではなく、セミコロン「;」やコロン「.」などではないか

以下、順を追って回答します。

GAIA_LO04の原因
ルックアップを利用するには、ルックアップ先アプリの閲覧権限が必要です。ルックアップ先アプリでレコード閲覧を許可したAPIトークンをリクエストヘッダ「X-Cybozu-API-Token」に指定しない場合、本エラーが発生します。
エラーを回避するには、 複数APIトークンの指定が必要です。

GAIA_IA02の原因
messageに記載のとおり、ルックアップ元アプリで生成したAPIトークンと一致しない場合や、アプリの更新が未実施のためアプリに反映されていないことが原因と考えられます。また、APIトークンの区切り文字としてカンマ(,)ではなく、セミコロン(;)やコロン(.)などを用いた場合もエラーが発生しました。

また、以下のようなJavaScriptコードをkintone上で実行し、正常にレコードが追加できることを確認しています。

(() => {
    'use strict';
    const url = kintone.api.url('/k/v1/record');
    const method = 'POST';
    // X-Cybozu-API-Token はkintoneアプリにあわせて変更
    const header = {
        'Content-Type': 'application/json',
        'X-Cybozu-API-Token': 'LookUpFrom,LookUpTo'
    }; 
    // app や record はkintoneアプリにあわせて変更
    const data = {
        'app': '7',
        'record': {
            'lookup': {
                'value': 'A'
            }
        }
    };
    kintone.proxy(
        url,
        method,
        header,
        data,
        (status, body, headers) => {
            console.log(status, body, headers);
        },
        (error) => {
            console.log(error);
        }
    )
})();

ちなみに、ほかのアプリのAPIトークンを誤って指定した場合や、ルックアップ先アプリに対応するレコードが存在しない場合は、GAIA_LO04が発生するようです。

最後に
こちらの投稿では発生したエラーを中心に記載いただいていますが、可能であればどのようにkintone REST APIを実行したときにエラーが発生したかという情報も含めていただくとなおよいかと存じます。以下は例です:

  • curlで以下のコードを実行したところエラーが発生しました:
  • kintone.proxy()header...と入力しているのですが、以下のエラーが発生します:

@roi08

ご回答ありがとうございます。ルックアップ元のtokenを再度確認してみて、

アプリの更新が行われていませんでした。自分で設定を確認できる状況ではなかったため

解決に時間がかかってしまいました。ありがとうございました。

「いいね!」 2

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。