はじめまして。初めて投稿させて頂きます。
高橋と申します。宜しくお願い致します。
まだまだ、javascriptについては未熟な部分もあり、
ご教授頂き、勉強にて自身成長していけたらとおもっております。
タイトルの通り、現在あるAアプリから特定のフィールドをゲストスペース内のBアプリのフィールドへ登録したいとおもっております。
下記、私自身でコードを書いてみました。
/*
* レコードの情報を修理進捗管理へボタン押下後に自動反映する。
* @author Kazuya Takahashi kazuyacambodia@angkorwat.in.net
* 登録するレコードは新規作成
*/
(function () {
“use strict”;
//他のアプリID
var otherAppId = 330;
kintone.events.on('app.record.detail.show',function(event){
var record = event.record;
//メニュー、右側にボタンを設置する
var myIndexButton = document.createElement('button');
myIndexButton.id = 'my_index_button';
myIndexButton.innerHTML = '修理進捗管理へ保存';
myIndexButton.onclick = function () {
window.alert('修理進捗アプリへ登録しますか?')
var enquiry = record.otoiawase1.value;
var enquiry1 = record.color.value;
var contents = record.content.value;
var params = {
app:otherAppId,
record:{
端末名:{
value:enquiry
},
カラー:{
value:enquiry1
},
症状:{
value:contents
}
}
};
kintone.api('/k/v1/records','POST',params);
};
kintone.app.record.getHeaderMenuSpaceElement().appendChild(myIndexButton);
});
})();
宜しくお願い致します。
ゲストスペース内のアプリに対してはURLが若干変わり/k/guest/(スペースのID)/v1/records.jsonとなります。
なお、ゲストスペースへのリクエストか否かを意識しないですむ方法が「kintone.apiにゲストスペースでも使える正しいパスを指定する」というTipsで紹介されています。
また、記載されているボディの形式は「レコードの登録(1件)」での記載方法になりますので、次のようにすると良いのではないかと思います。
(function () {
"use strict";
//他のアプリID
var otherAppId = 330;
kintone.events.on('app.record.detail.show',function(event){
var record = event.record;
//メニュー、右側にボタンを設置する
var myIndexButton = document.createElement('button');
myIndexButton.id = 'my_index_button';
myIndexButton.innerHTML = '修理進捗管理へ保存';
kintone.app.record.getHeaderMenuSpaceElement().appendChild(myIndexButton);
myIndexButton.onclick = function () {
window.alert('修理進捗アプリへ登録しますか?')
var enquiry = record.otoiawase1.value;
var enquiry1 = record.color.value;
var contents = record.content.value;
var params = {
app:otherAppId,
record:{
端末名:{
value:enquiry
},
カラー:{
value:enquiry1
},
症状:{
value:contents
}
}
};
kintone.api(kintone.api.url('/k/v1/record', true), 'POST', params, function(resp) {});
};
});
})();
いかがでしょうか?
Ryu Yamashita 様
ご回答ならびアドバイス有難うございました。
その後、試行錯誤しておりますが、下記の通り書き換えましたが、エラーが返ってくるのみとなっており苦戦しております。
(function () {
“use strict”;
//他のアプリID
var otherAppId = 330;
kintone.events.on('app.record.detail.show',function(event){
var record = event.record;
//メニュー、右側にボタン
var myIndexButton = document.createElement('button');
myIndexButton.id = 'my_index_button';
myIndexButton.innerHTML = '修理進捗管理へ保存';
kintone.app.record.getHeaderMenuSpaceElement().appendChild(myIndexButton);
myIndexButton.onclick = function () {
window.alert('修理進捗アプリへ登録しますか?')
var enquiry = record.otoiawase1.value;
var enquiry1 = record.color.value;
var contents = record.content.value;
var params = {
"app":otherAppId,
"record":{
"端末名":{
"value":enquiry
},
"カラー":{
"value":enquiry1
},
"症状":{
"value":contents
}
}
};
kintone.api(
kintone.api.url('/k/v1/records',true),
'POST' ,
params ,
function(resp){
alert('登録が完了しました')
},
function(resp){
alert('登録エラー')
}
);
};
});
})();
また、記載されているボディの形式は「レコードの登録(1件)」での記載方法になりますので、次のようにすると良いのではないかと思います。
こちらが修正されていないようです。
レコードの一括登録(records.json)とレコードの登録(1件)(record.json)はリクエストボディへの記載方法が異なりますので、ご確認頂ければと思います。
レコードの一括登録(records.json)を使われたいのであれば、
paramsが次のようになると思います。
{
"app": otherAppId,
"records": [
{
端末名:{
value:enquiry
},
カラー:{
value:enquiry1
},
症状:{
value:contents
}
}
]
}
また、パッと見ですが、alert() の後ろのセミコロンが抜けているようです。
kintone REST APIをJavaScriptからコールする際のデバッグにはこの辺(1, 2)を参考にされるのも良いかと思います。
REST APIをJavaScriptからコールして上手くいかない時には、POSTMAN等他の方法でまずコールしてみるのは、3者意見的に問題解決への近道になることがあります。正味のコール部分以外kintone JavaScript APIの機能が使えないというのはありはしますが。
Ryu Yamashita 様
早速のご回答、アドバイス有難うございます。
勉強になります。参考にさせて頂きます。