お世話になっております
下記のコードでレコード削除時に別のログを記録するアプリに削除されたことを記録しようとしたのですがうまく作動いたしません
同様の物でレコードの追加、表示、更新はすべてうまく行き、また、alertが表示されることからイベント自体は反応しているようなのですが、実際にログの記録は行われません
どこか修正箇所があれば教えていただけないでしょうか
宜しくお願い致します
kintone.events.on(‘app.record.detail.delete.submit’, function(event) {
// アプリIDの取得
var appId = event.appId;
// レコード番号の取得
var recordId = event.recordId;
alert(“削除します”);
// リクエストプロパティ(JSON)
var params = {
“app”: 375, // ← 参照ログを格納するアプリのIDに書き換えてください
“record”: {
“閲覧アプリID”: { “value”: appId },
“閲覧アプリ名”: { “value”: appName },
“閲覧レコードID”: { “value”: recordId },
“処理内容”: { “value”: “レコード削除”}
}
};
// kintone REST API リクエスト ~ レコードの登録(POST)
kintone.api(
kintone.api.url(‘/k/v1/record’, true), // - pathOrUrl
‘POST’, // - method
params, // - params
function(resp) { // - callback
// (特に何もしない)
alert(resp)
},
function(resp) { // - errback
// (特に何もしない)
alert(“エラー”)
alert(resp.json)
}
);
});
kintone.api(
↓
return kintone.api(
として、alert(resp) と alert(resp.json) の次の行に return event; を入れてみてください。
※return eventを返してあげないとsubmitの中の処理が終わらないうちに画面が遷移してしまいます。
あと「appName」が指定されていないですね。
var recordId = event.recordId;の下に
const appName = cybozu.data.page.APP_NAME;
を足すか、もしくは手動でアプリ名を指定してください。
"閲覧アプリ名": { "value": appName },
↓
"閲覧アプリ名": { "value": "ここにアプリ名を書く" },
どうでしょうか。
kintone.events.on('app.record.detail.delete.submit', function(event) {
// アプリIDの取得
var appId = event.appId;
// レコード番号の取得
var recordId = event.recordId;
constappName = cybozu.data.page.APP_NAME;
alert("削除")
// リクエストプロパティ(JSON)
var record_link = "https://fpbuild.cybozu.com/k/" + appId + "/show#record=" + recordId
var params = {
"app": 375, // ← 参照ログを格納するアプリのIDに書き換えてください
"record": {
"閲覧アプリID": { "value": appId },
"閲覧アプリ名": { "value": appName },
"閲覧レコードID": { "value": recordId },
"レコードへのリンク": { "value": record_link },
"処理内容": { "value": "レコード削除"}
}
};
// kintone REST API リクエスト ~ レコードの登録(POST)
return kintone.api(
kintone.api.url('/k/v1/record', true), // - pathOrUrl
'POST', // - method
params, // - params
function(resp) { // - callback
return event;
alert("正常")
alert(resp.json)
},
function(resp) { // - errback
return event;
alert("エラー")
alert(resp.json)
}
);
上記内容に変更致しました
alert(“削除”)は表示されることからイベントは反応していると思うのですが
下記のalertの結果は
“エラー”
object Object
が出力されます
同様の処理で追加、更新、一覧表示時には正常に記載されています
こちらでまったく同じソースを使って(app idだけ変えて)テストしてみましたが、ちゃんとログが残りました。
エラーが発生するとしたら、ログを取るアプリ側の問題かもしれません。
上記は全て文字列フィールドにしていますが、例えばリンクはリンクフィールドを使ったりしていますか?
(もっともリンクフィールドにしても動いていますが)
その他重複禁止やルックアップ、必須項目などが邪魔している可能性もあります。
あと、alert(resp.json) ですと結局中身が見られなかったり、この書きかたですと
色々と不都合がありますので、return kintone.apiの部分は以下のようにしてみてください。
return kintone
.api(kintone.api.url('/k/v1/record', true), 'POST', params)
.then(function (resp) {
console.log(resp);
alert('正常');
return event;
})
.catch(function (err) {
alert('エラー');
event.error = 'エラー発生';
console.log(err);
return event;
});
ブラウザでF12キーを押してコンソールを見ると中にエラーなどが表示されます。
また、「event.error = ‘エラー発生’;」のようにすると削除自体をキャンセルすることができます。
ということで、どうでしょうか?
ちなみにフィールド削除レコードのURLを残してもリンク切れになるだけなので、削除イベント時には
レコードへのリンク欄は空(もしくはアプリトップへのリンク)にしてもよいかもですね。
お世話になっております、もう一度細かく確認いたしましたところ
lこちらの環境ではレコード削除という選択肢がドロップダウンのリストにない状態でした
こんな単純なミスで申し訳ございません、現在無事、正常に動作しております
ご指導いただきまして誠にありがとうございました