マスタを間接的に更新するアプリ

実現したいこと

 マスタ更新アプリで入力した「新住所」をマスタの「住所」にセットして更新したい。

マスタ更新アプリは、ルックアップでマスタから「住所」を獲得し、旧住所のフィールドに表示し、

「新住所」を入力する仕様であある。

 

** エラー情報**

マスタの「住所」が更新されない。

window.alertとして以下の内容が表示される。

 

利用したソースコード

(function() {

    ‘use strict’;

    kintone.events.on([‘app.record.create.submit’, ‘app.record.edit.submit’], function (event){

 // 新住所を取得する

 var record = event.record;

 var updatedAt = record[‘新住所’].value;

 window.alert(updatedAt);

 var lookupvl = record[‘ルックアップ’].value;

 window.alert(lookupvl);

//                 

var body = {

  ‘app’: (1) ,

  ‘updatekey’: {

     ‘field’ : ‘(生徒コード)’ ,

     ‘value’ : (lookupvl) ,

  },

  ‘record’: {

    ‘住所’: {

      ‘value’: (updatedAt), 

    },

  }

}

kintone.api(kintone.api.url(‘/k/v1/record.jason’, true), ‘PUT’, body, function(resp) {

  // success

  window.alert(resp);

}, function(error) {

  // error

  window.alert(error);

})})})();

 

試したこと

 

再現条件

  • 画面・イベント:詳細画面
  • カスタマイズに関連するフィールド(フィールド種類/フィールド名/フィールドコード):
  • 権限設定:
  • デバイス(PC or モバイル):PC
  • OS・ブラウザ:Windows10・edge
  • IP制限などネットワークに特殊なことがあれば:

 よろしくお願いいたします。

こんばんは。

細かいところは確認していませんが、APIのURLが間違ってるようです。

kintone.api(kintone.api.url('/k/v1/record.jason', true), 'PUT', body, function(resp) {

jason → json ですね。

こんにちは。

ご指摘ありがとうございました。

早速、修正し再実行いたしましたが、結果は同じものでした。

.jsonを削除して実行したところ、エラーではありましたが、window.alert(error)の内容が変化しました。

以下の表示です。

 

 

こんにちは。

window.alert() の箇所を console.log() に置き換えたら、内容を確認できるかと思います。

その際、結果は開発者ツールのコンソールに表示されるのでご注意下さい。

コンソールについては以下をご覧下さい。

https://developer.cybozu.io/hc/ja/articles/207613916

ありがとうございます。ブラウザをchromeに変更し、コンソールに表示しました。

エラーの意味がよくわかりませんが、ご指摘いただけますでしょうか。よろしくお願いいたします。

1つ前のコメントに加えて、以下の質問をさせていただいてもよろしいでしょうか。

PUTの説明に以下のリクエストヘッダが必要とありましたが、これが関連しているのでしょうか。

PUT /k/v1/record.json HTTP/1.1
Host: example.cybozu.com:443
X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU=
Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU=
Content-Type: application/json

上記コードの設定が必要な場合のサンプル(*.js)があればと思うのですが・・・。

こんにちは。

送っているデータがおかしい可能性がありますね。

コンソールに表示されているメッセージをクリックすると、隠れている部分が展開されてもう少し詳細なエラーメッセージを確認できる場合がありますので、確認してみてはいかがでしょうか。

パッと見た感じだと、JSON内にある()は不要そうです。

お疲れ様です。

以下の詳細メッセージが表示されました。

リエストヘッダについて、ご教授おねがいできますか。

セッション認証には、「X-Requested-With」ヘッダーが必要です。"

こんにちは。

JavaScript APIを使ってる場合、通常はそのエラーは出ないはずなんですよね・・・。

他に原因があるかもしれないので、最新のソースコードを貼って頂いて良いでしょうか?

ご対応ありがとうございます。最新のソースコードです。

最後の()を削除すると、最初の2件のwindow.alertが表示されなくなったので、もどしました。

よろしくお願いいたします。

(function() {

    ‘use strict’;  

    kintone.events.on([‘app.record.create.submit’, ‘app.record.edit.submit’], function (event){

 // 新住所を取得する

 var record = event.record;

 var updatedAt = record[‘新住所’].value;

 window.alert(updatedAt);

 var lookupvl = record[‘ルックアップ’].value;

 window.alert(lookupvl);

//                 

var body = {

  ‘app’: 1,

    records :[

      {

        ‘updatekey’: {

          ‘field’ : ‘生徒コード’ ,

          ‘value’ : lookupvl ,

       },

       ‘record’: {

         ‘住所’: {

           ‘value’: updatedAt , 

         },

      }

    

  },

]

};

//

kintone.api(kintone.api.url(‘/k/v1/record’, true), ‘PUT’, body, function(resp) {

  // success

  console.log(resp);

  window.alert(lookupvl);

}, function(resp) {

  // error

  console.log(resp);

}

);

});

})();

こんにちは。

実行しているAPIが「/k/v1/record」という事は、1レコードを更新されたいという事ですよね?

だとしたら、JSONのフォーマットが違ってそうです。(recordsの配列にはならない)

こんな感じでしょうか。

var body = {
'app': 1,
'updateKey': {
'field' : '生徒コード' ,
'value' : lookupvl ,
},
'record': {
'住所': {
'value': updatedAt ,
}
}
};

お世話になっております。

1レコード更新にソースを置き換えて、再実行しましたが、エラーでした。ピンクの部分だけになりましたが・・・。

 

お疲れ様です。

PUT (中略) 400 Bad Request とエラーメッセージが出力されていますが、

エラー概要一覧のようなドキュメントはないのでしょうか。

あるいは、1件更新のサンプルソースはないのでしょうか。

よろしくお願いいたします。

 

JSONを修正すればいけそうなのですが、なんででしょうね・・・。
(400 Bad Requestなので、送ってるJSONに原因がありそうな気はします)

サンプルですが、チュートリアルには1件の追加、複数件の更新しか無さそうですね。

APIドキュメントのJavaScriptサンプルか、コミュニティの過去記事を検索するぐらいでしょうか。

そもそも、APIドキュメントのPUTのサンプルを見てソースを作成しました。()をつけたり、はずしたり、

’→”へ変更したり、いろいろ試してみましたが、だめでした。

eslintをインストールし、チェックしましたが、エラーは0でした。ワーニングはたくさんありましたが、・・・。

マスタのアクセス権限もすべてチェックを入れてあります。

Kintoneのバグ・・・ 。マスタのアップデートキーの項目の設定も、重複禁止にチェックを入れてあります。

1件の更新(PUT)について、アップデートキーによる例題をぜひ、テストお願いできないでしょうか。

そして、詳細イベントの処理については、正しく動作しています。入力した、ルックアップと新住所はアラートで正しく

表示されます。

 

最新のソースを見せて頂ければ、確認はさせて頂けますよ。(解決するかどうかは・・・^^;)

ありがとうございます。最新のソースを貼り付けます。(From Visual Studio Code : ESLint インストール済  )

よろしくお願いいたします。

(function() {

    “use strict”;  

    kintone.events.on([‘app.record.create.submit’, ‘app.record.edit.submit’], function (event){

 // 新住所を取得する

 var record = event.record;

 var updatedAt = record[“新住所”].value;

 window.alert(updatedAt);

 var lookupvl = record[“ルックアップ”].value;

 window.alert(lookupvl);

//                 

var body = {

  “app”: 1 ,

        “updatekey”: {

          “field”: “生徒コード” ,

          “value”: lookupvl

       },

       “record”: {

         “住所”: { “value”: updatedAt }

      }

};

//

 kintone.api(kintone.api.url(‘/k/v1/record’, true), ‘PUT’, body, function(resp) {

  // success

  console.log(resp);

  window.alert(lookupvl);

}, function(resp) {

  // error

  console.log(resp);

}

);

});

})();

JSONを作ってる箇所ですが、updatekeyをupdateKeyに変えたらどうなりますか?(kを大文字)

多分、400エラーが出ているのは、これが原因な気がします。

お世話になりました!!!

_ マスタ更新成功 _しました。

KintoneのJavaScriptによるカスタマイズの第一歩を踏み出すことができました。

今後、カスタマイズの処理を続ける上で、おおきな記念になりました。教訓になりました。

ほんとうにありがとうございました。

さまざまな失礼をお許しください・・・。

 

 

うまく動いたんですね、良かったです!