レコードの一括更新について

みなさん、はじめまして。
最近、会社でkintoneを導入して投稿させて頂きましてトシボウと申します。

現在、レコード詳細画面に作成したボタンをクリックすると、詳細画面に表示されているレコードの特定のフィールドの値を、全レコードへ反映(更新)するといった、オリジナルのプラグインを作成しております。

kintone Rest APIにて、レコードの全件取得までは問題なく動作していると思われますが、mapメソッドにて特定のフィールドの値を変更しようとしたところで、「Failed to load resource: the server responded with a status of 400 (Bad Request)」及び「{“code”:“CB_JH01”,“id”:“d6qz3xK1D2PLUqjwe4O5”,“message”:“認証に失敗しました。セッション認証には、「X-Requested-With」ヘッダーが必要です。”}」というメッセージが表示され、レコードの一括更新ができていません。

オンラインでの構文チェックでも、特に構文ミスが無いようで頭を悩ませております。
以下に、mapメソッド以降のコードを記載致します。

※ 特定のフィールド: first_day,last_day
変数: newfirst_day,newlast_day

もしかすると初歩的なミスかもしれませんが、ご教示の程、宜しくお願いします。

const putAllRecordsObj = getAllRecords.map((record) => {const recordId = record.レコード番号.value;const newfirst_day = record.first_day.value;const newlast_day = record.last_day.value;return {id: recordId,record: {first_day: {value: newfirst_day,},last_day: {value: newlast_day,},},};});け

map関数の内部を拝見したところ、パッと見てわかるエラーは無さそうでした。
エラー内容から察するに、putAllRecordsObjそのものの構成が間違っているというより、このオブジェクトを使った更新の際の認証情報が誤っていると思われます。
おそらくセッション認証の方法2をお使いなのかなと思いますが、方法1の kintone REST APIリクエストを送信する - cybozu developer network方法をとることは難しいでしょうか?

puppet様

早々にご返信頂きまして、誠にありがとうございます。

ご教示頂きましたkintone REST APIのリクエストを送信する方法を採用することは可能でございます。

「 const putAllRecordsObj = getAllRecords.map((record) => { 」の部分を

「 const putAllRecordsObj = await kintone.api(kintone.api.url(‘/k/v1/record.json’, true), ‘PUT’, body) => { 」に変更することで問題ございませんでしょうか?

との事なので、現在トップに貼り付けていただいているコードはそのままで問題ないかと思われます。
その後に、putAllRecordsObjオブジェクトを使って更新を行うときに認証エラーが起きているのではないかと。

puppet様

ご返信頂きまして誠にありがとうございます。

ご教示頂きました通り、コードを修正しましたがやはり、同様の認証エラーが生じておりますので、調査中でございます。

1点確認させて頂きたいのですが、kintone APIを使用する場合は下記リンク先にあります通り、トークン認証等は不要との理解でよろしいでしょうか?

また、複数のレコード更新の場合は「/k/v1/record.json」ではなく、「/k/v1/records.json」となりますでしょうか?

はい、一括更新を行おうとするユーザーが、
①一括更新対象のレコードすべての編集権限をもっている かつ
②更新対象のフィールドの編集権限をもっている
場合は認証不要です。

もしも一部の対象レコードやフィールドに対して編集権限がない(またはその可能性がある)といった場合は、APIトークン認証を用いる等別の認証方式を使用する必要があります。

ご認識のとおり、複数件のレコードを更新する場合は/k/v1/records.jsonを使用します。
具体的には以下ページが参考になります。
複数のレコードを更新する - cybozu developer network

puppet様

早々にご返信頂き、大変ありがとうございます。

ご教示頂きました内容について、承知致しました。

もう少し自力で調査しようと思いますが、また何かありましたら投稿させて頂きますので、ご指導の程、宜しくお願い致します。

「いいね!」 1