何を実現したいのかを書きましょう
出前弁当の発注をkintoneを利用して行いたいと思います
Aアプリでは個人個人が出前予約を書き込むアプリ
Bアプリでは出前発注担当者が出前業者に発注するためのアプリ
(出前発注担当者が出前業者に「うどんが8つで、カレーが5つで…」のように集計した結果をどこに配達するか出前業者にFAXを送るためです)
にしようと考えています
〇kintoneで2つのアプリを作成しました
A:1つは「弁当注文受付表」アプリ:アプリID342
B:1つは「弁当発注」アプリ:アプリID419
〇Aのアプリでのフィールド構成は
【レコード番号】、【日付】、【社員名】、【所属工場】、【弁当区分2】
という5つのフィールドから一つのレコードが構成されています
各個人がAアプリで5つの入力項目に入力してもらいます
〇Bのアプリでのフィールド構成は
【日付】、【第一工場の1弁当集計】、【第一工場の2弁当の集計】、【第二工場の1弁当集計】、【第二工場の2弁当集計】という5つのフィールドから一つのレコードが構成されています
【日付】以外のフィールドはテーブルから集計結果を算出するための計算フィールドです
〇Bのアプリではテーブルが存在しています
テーブルのフィールド構成は
Tテーブル:【レコード番号T】、【社員名T】、【所属工場T】、【弁当区分T】
4つのフィールドから一つのテーブルレコードが構成されています
〇このAとBの2つのアプリを連携させたいと思っています
出前発注担当が発注時にBアプリで新規追加ボタンを押すと動作が発動するようにしたいです
〇動作の流れは以下のようにしたいです
①、Bアプリで新規作成ボタンを押します
②、新規作成の詳細画面になります
③、Bアプリの【日付】フィールドにkintone標準機能で今日の日付が入るように設定してあります
④、保存ボタンを押します
⑤、保存を押したらAアプリの【日付】フィールド値とBアプリの【日付】フィールド値が一致するAアプリのレコードを取得します。この時のAアプリのクエリの条件がAアプリの【日付】フィールド値が今日から3日前までの範囲で検索します
⑥、⑤で取得したレコードを
・Aアプリの【レコード番号】フィールド値をBアプリTテーブルの【レコード番号T】フィールドにセット
・Aアプリの【社員名】フィールド値をBアプリTテーブルの【社員名T】フィールドにセット
・Aアプリの【所属工場】フィールド値をBアプリTテーブルの【レコード番号T】テーブルにセット
・Aアプリの【弁当区分2】フィールド値をBアプリTテーブルの【弁当区分T】テーブルにセット
⑦、画面をリロードする
〇Bアプリで詳細画面を開いて画面をリロードしたときに、Aアプリの【日付】フィールド値とBアプリの【日付】フィールド値が一致する条件のBアプリTテーブル内のレコードで、Aアプリにはレコードが存在していて、BアプリTテーブルにはレコードが存在しない場合、⑥と同じ条件でAアプリのレコードをBアプリTテーブルのレコードに更新追加する
〇Bアプリで詳細画面を開いて画面をリロードしたときに、Aアプリの【日付】フィールド値とBアプリの【日付】フィールド値が一致する条件のTテーブル内のレコードで、BアプリのTテーブルにはレコードが存在していて、Aアプリのレコードに存在しないレコードは、BアプリのTテーブルのレコードから削除する
発生した問題やエラーメッセージを具体的に書きましょう
エラーがでてしまい、たどっていくと"日付"フィールドに問題がありそうなのですが、Aアプリにはちゃんとフィールドコードが「日付」というものが存在しているのに、nullで返されてしまい困っています
実行したコードをコピー&ペーストしましょう
(function() {
"use strict";
// AアプリのアプリケーションID
var appAId = 342; // AアプリのアプリID
// 保存ボタンが押されたときのイベントハンドラー
kintone.events.on('app.record.create.submit', function(event) {
// Bアプリの日付フィールドから日付を取得
var bRecordDate = kintone.app.record.getFieldElement('日付').value;
// Aアプリのクエリ条件を設定
var threeDaysAgo = new Date();
threeDaysAgo.setDate(threeDaysAgo.getDate() - 3);
var threeDaysAgoString = threeDaysAgo.toISOString().split('T')[0];
var query = '日付 > "' + threeDaysAgoString + '"';
// Aアプリからレコードを取得
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
app: appAId, // AアプリのアプリIDを使用
query: query
}, function(resp) {
// BアプリのアプリID
var appBId = 419; // 弁当発注アプリのアプリID
// 検索結果のレコードを処理
resp.records.forEach(function(record) {
// BアプリのTテーブルにレコードを追加するデータを準備
var postData = {
"app": appBId,
"records": [{
"レコード番号T": { "value": record.レコード番号.value },
"社員名T": { "value": record.社員名.value },
"所属工場T": { "value": record.所属工場.value },
"弁当区分T": { "value": record.弁当区分2.value }
}]
};
// BアプリのTテーブルにレコードを追加
kintone.api(kintone.api.url('/k/v1/records', true), 'POST', postData, function(resp) {
console.log("Added record to B app successfully:", resp);
});
});
});
});
// 詳細画面表示時のイベントハンドラー
kintone.events.on('app.record.detail.show', function(event) {
// Bアプリの日付フィールドの値を取得
var bRecordDate = kintone.app.record.getFieldElement('日付').value;
// Aアプリのクエリ条件を設定
var query = '日付 = "' + bRecordDate + '"';
// Aアプリからレコードを取得
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
app: appAId, // AアプリのアプリIDを使用
query: query
}, function(resp) {
// BアプリのアプリID
var appBId = 419; // 弁当発注アプリのアプリID
// 検索結果のレコードを処理
resp.records.forEach(function(record) {
// BアプリのTテーブルに存在しないレコードを削除する処理
// ここに削除処理を記述
});
});
});
})();
まだ全然知識がなく、うまくいくともあればうまくいかないこともあります。
知識のあるどなたかアドバイスいただきたいと思います