aaa1
(あああ)
1
初心者でして、右も左も分からない状態です。
どうかお力添えをよろしくお願いいたします。
Aアプリで、担当名・実施日(yyyy-mm-dd)のレコードが登録されています。
Bアプリには、担当名ごとにレコードがあり、フィールドはサブテーブルで年度と1~12月のレコードがあります。
Aアプリの実施日の年月を見て、Bアプリで月ごとに回数をカウントしたいです。
もし、Aアプリの実施日が変更になったら、Bアプリも変更させたいです。
色々と調べましたができませんでした、、、。
教えてください。
よろしくお願いします。
pomo
2
Aレコードの保存後のイベントタイミングで集計して、BアプリにREST APIで集計結果を更新してあげるといいのかと思いますので、まずはこの辺りを参照し構築してみてください。
レコード編集画面で保存に成功した後のイベント
1 件のレコードを更新する
aaa1
(あああ)
3
ご回答ありがとうございます。
APIを使用せずに行うのは難しいでしょうか?
また、JS自体もほぼ分からずでして、もしよろしければ表題の件についてコードなどを教えていただくことは可能でしょうか、、?
時間がなく、1からコードを作成する余裕が今はありません、、、。
ご検討いただけたら嬉しいです。
pomo
4
apiを使用して他アプリの更新を掛ける必要はあります。
私に限らずですが1からコード作成する余裕がなく→そのコードを回答者に1から作成要求はあまり良くないので、できる限り作成し現状の問題を投稿いただいた方がいろんな方から回答が来やすくなると思うのでまずはチャレンジしてみてください!
やってることの近しいことはこの辺りだと思います。
添付ファイルの有無をレコード保存時に知りたい
「いいね!」 2
aaa1
(あああ)
5
Aアプリが予定入力アプリ、Bアプリが個別Mアプリです。
実績アプリを開いたときに回数をカウントするようにしました。
値が変わらないので、アドバイスをいただきたいです。
ぜひよろしくお願いいたします
(function() {
// 予定入力アプリ
var SCH = {
date: '実施予定日',
consul: '担当コンサル'
};
// 個別Mアプリ
var IND = {
consul: '担当コンサル',
year: '予定回数_年度',
months: [
'予定回数_1月', '予定回数_2月', '予定回数_3月', '予定回数_4月',
'予定回数_5月', '予定回数_6月', '予定回数_7月', '予定回数_8月',
'予定回数_9月', '予定回数_10月', '予定回数_11月', '予定回数_12月'
]
};
// 個別MアプリのID
var IndId = ●;
// 実績アプリのID
var AchId = ●;
var currentAppId = kintone.app.getId();
// 実績アプリを開いた場合のみ実行
if (currentAppId === AchId) {
var SchRecord = kintone.app.record.get({ app: ●, id: kintone.app.record.getId() }).record;
var consultant = SchRecord[SCH.consul].value;
// 個別Mアプリのサブテーブルに回数を加算
var IndRecord = {
app: IndId,
query: IND.consul + '="' + consultant + '"',
fields: [IND.year].concat(IND.months),
record: {}
};
IndRecord.record[IND.year] = {
value: yearMonth.slice(0, 4)
};
// 月の部分は実施予定日から取得した月を元に、対応するフィールドに1を加算する
IndRecord.record[IND.months[parseInt(yearMonth.slice(5, 7)) - 1]] = {
value: {
type: 'NUMBER',
value: 1
}
};
// 個別Mアプリに対してレコード取得
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', IndRecord, function(response) {
var records = response.records;
if (records.length > 0) {
var updateRecord = {
app: IndId,
id: records[0].$id.value,
record: IndRecord.record
};
// 個別Mアプリのレコードを更新
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', updateRecord, function(response) {
console.log('Success:', response);
},
function(error) {
console.error('Error:', error);
}
);
}
}, function(error) {
console.error('Error:', error);
});
}
})();
pomo
6
開いた時という事なので、上にも書いたのですがkintoneのイベントの中で実行してください。
イベント処理の記述方法
実績アプリから予定アプリのレコードを取得しようとしてると思うので
var SchRecord = kintone.app.record.get({ app: ●, id: kintone.app.record.getId() }).record;
まずはここの部分を修正してみてください。取得方法は下の方に記述された個別Mアプリからの取得方法で大丈夫です。
一度に全部実装しないで段階的に実装してみるといいかなと思います。
aaa1
(あああ)
7
初心者に付き合っていただき、本当に感謝しています。ありがとうございます。
ちなみになのですが、予定入力アプリでこのJavascriptを設定して、
実績アプリを開いたときにこのコードを実行することは可能でしょうか?
apiの制限が気になるので。。。
pomo
8
実績アプリを開いた時のコードは実績アプリで実装してください。