Aアプリのテーブルのデータを、Bアプリにコピーしようとしています。
まずはテーブルのデータを取得しようと試していますが、うまくいきません。
JavaScriptからREST APIのGETメソッドを呼びだして、callback関数で表示させようとしていますが、記述が間違っているのでしょうか。
kintone.api(‘/k/10/record’, ‘GET’, {app: 10, id: 1}, function(resp){window.alert(resp);});
他に方法や参考になる情報があればご教授頂けますでしょうか。
よろしくお願いします。
大川さん
まずは記述されているコールバック関数の部分ですが、次のような感じで行けると思います。
kintone.api(‘/k/v1/record’, ‘GET’, {“app”: kintone.app.getId(), “id”: 5},function(resp) {console.log(resp);});
ここで、kintone.api(‘/k/v1/record’,・・・の部分は、従来のリクエストURL
→ https://(サブドメイン名).cybozu.com/k/v1/record.json
のうち「.com」までと「.json」を省いた部分を記載することになります(他のリクエストも同様です)。
kintone.api()の第1引数が
‘/k/10/record’
ではなく
‘/k/v1/record’
で行けると思います。
尚、respをそのままalertで表示しても
[object Object]
と表示されてしまいますので、山下さんが書かれているように
console.log(resp)
を使うか、以下のように具体的なフィールド名のvalueを指定して表示させてみてください。(この場合は「レコード番号」というフィールド名です)
kintone.api(‘/k/v1/record’, ‘GET’, {app: 120, id: 1}, function(resp){window.alert(resp[‘record’][‘レコード番号’][‘value’]);});
うまくいかないというのは具体的にどのようにうまくいっていませんでしょうか?
書いて頂いたJSを実行するとアラートにはどういうメッセージが表示されますでしょうか?
仮にアプリIDが10でレコード番号が1のレコードが存在する前提であればkintone.api関数からサブテーブルのデータを取得することが可能です。
サンプルとしてフォームの設計を以下とします。
サブテーブルのフィールドコード:table
サブテーブル内の文字列フィールドのフィールドコード:text1
次に書かれた形と同じような実装を書くと以下になります。
kintone.api(‘/k/v1/record’, ‘GET’, {app: 10, id: 1}, function(resp) {
// レコード番号を表示する
alert(resp[‘record’][‘table’][‘value’][0][‘value’][‘text1’][‘value’]);
});
これでreordというフィールドコードのサブテーブルの1行目に登録されているtest1フィールドコードの値が表示されます。
例えば、これをレコードの詳細画面が表示された時に実行したい場合は、app.record.detail.show イベントを使って以下のように書きます。
(function () {
“use strict”;
function test(event) {
kintone.api(‘/k/v1/record’, ‘GET’, {app: 10, id: 1}, function(resp) {
// レコード番号を表示する
alert(resp[‘record’][‘table’][‘value’][0][‘value’][‘text1’][‘value’]);
}, function(resp) {
// エラーの場合はメッセージを表示する
var errmsg = ‘レコード取得時にエラーが発生しました。’;
// レスポンスにエラーメッセージが含まれる場合はメッセージを表示する
if (resp.message !== undefined){
errmsg += ‘’ + resp.message;
}
alert(errmsg);
});
}
// 画面から保存時のイベント
kintone.events.on(‘app.record.detail.show’, test);
})();
皆様ご回答ありがとうございました。
表示はうまくいきました。引数と表示方法が問題でした。
今度は取得したデータのコピーを試していきます。