お世話になります
過去の投稿を参考にコードを作成したのですが、
新規レコード追加時に取得の動作をしませんでした
https://developer.cybozu.io/hc/ja/community/posts/900001304403-%E3%83%AB%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%81%AE%E7%B5%9E%E3%82%8A%E8%BE%BC%E3%81%BF%E3%81%AE%E5%88%9D%E6%9C%9F%E8%A8%AD%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E8%87%AA%E5%8B%95%E9%81%B8%E6%8A%9E
初心者のためアドバイスを頂けたらと思います
①マスタを作成
1.マスタにはメンバーとその上長が登録されている
②アプリを作成し、ルックアップを挿入。絞り込みの初期設定はログインユーザー
1.マスタ側にもログインユーザーの項目をいれている
2.メンバー→次のいずれかを含む→ログインユーザー
③上長は複数おり、各メンバーによって上長を変更させる
メンバーがレコードを追加するときに、ログインユーザーで絞り込みの初期設定をしているので
そのままログインユーザーをもとに自動取得させたいのですが、フィールドコードの設定が間違っているのか、自動で取得出来ません
(function() {
“use strict”;
var events1 = [‘app.record.create.show’];
kintone.events.on(events1, function(event) {
var record = event.record;
// ここの!record[‘メンバー’]には作成したマスタのフィールドコードを入れています
if (!record[‘メンバー’][‘value’]) {
// ルックアップ先アプリIDを取得してリクエストボディにセット
var appId = kintone.app.getLookupTargetAppId(“メンバー”);
var user = kintone.getLoginUser();
var params = {
‘app’: appId,
// メンバーのアカウントをキーにしたクエリ(マスタ側のユーザー選択)
‘query’: ‘メンバーアカウント in (LOGINUSER()) order by $id desc limit 1’
};
// REST APIでルックアップ先のレコードを1件取得
kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, params, function(resp) {
var setRecord = kintone.app.record.get();
// 取得したレコードの値をルックアップ元にセット
setRecord[‘record’][‘上長設定’][‘value’] = resp[‘records’][0][‘上長設定’][‘value’];
// セットした値でルックアップ実行
setRecord[‘record’][‘上長設定’][‘lookup’] = true;
kintone.app.record.set(setRecord);
});
}
});
})();
(function() {
'use strict';
const events1 = ['app.record.create.show'];
kintone.events.on(events1, (event) => {
const record = event.record;
// ここの!record['メンバー']には作成したマスタのフィールドコードを入れています
if (!record['メンバー'].value) {
// ルックアップ先アプリIDを取得してリクエストボディにセット
const appId = kintone.app.getLookupTargetAppId("上長設定");
const params = {
'app': appId,
// メンバーのアカウントをキーにしたクエリ(マスタ側のユーザー選択)
'query': 'メンバーアカウント in (LOGINUSER()) order by $id desc limit 1'
};
// REST APIでルックアップ先のレコードを1件取得
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params, (resp) => {
const setRecord = kintone.app.record.get();
// 取得したレコードの値をルックアップ元にセット
setRecord.record['上長設定'].value = resp.records[0].上長設定.value;
// セットした値でルックアップ実行
setRecord.record['上長設定'].lookup = true;
kintone.app.record.set(setRecord);
});
}
});
})();
アプリの設定内容、フィールドコードがどうなっているのかわからない部分がありました。
メンバーアプリ(マスター)
・メンバーアカウント(ユーザー選択)
・上長設定(文字列1行)
読み出しアプリ(ルックアップ元)
・上長設定(ルックアップ)
・メンバー(文字列1行)エラー回避用ダミー
という前提で動作しました。
// ここの!record['メンバー']には作成したマスタのフィールドコードを入れています
if (!record['メンバー']['value']) {
ルックアップする側のアプリにメンバーというフィールドコードがあり、値が入っていないときを指定しています。
おそらく実現されたいことは
Kintoneで他のアプリからユーザー選択の値を取得する - ponsuke_tarou’s blog
https://ponsuke-tarou.hatenablog.com/entry/2021/06/22/215117
に近いのではないかと思います。
harada 様
ご返信ありがとうございます。
①マスタ側にあるもの
メンバー(文字列1行)
メンバーアカウント(ユーザー選択)
上長設定(ユーザー選択)
②ルックアップするほう
絞り込みの初期設定→メンバーアカウントを次のいずれかを含む(ログインユーザー)に設定
取得をすると、
メンバー(ルックアップ)
上長(ユーザー選択)のフィールドに反映
>・メンバー(文字列1行)エラー回避用ダミー は必要ということでしょうか?
慣れておらずすみません
1)ルックアップでは、ルックアップする側のユーザー選択の値を更新するというのはできないようです。設定画面でユーザー選択の項目が表示されない。
2)そのため、ルックアップで更新するのではなくJavascriptで直接更新するやり方が必要になります。
Kintoneで他のアプリからユーザー選択の値を取得する - ponsuke_tarou’s blog
https://ponsuke-tarou.hatenablog.com/entry/2021/06/22/215117
>・メンバー(文字列1行)エラー回避用ダミー は必要ということでしょうか?
// ここの!record['メンバー']には作成したマスタのフィールドコードを入れています
if (!record['メンバー']['value']) {
は、Javascriptを実行したアプリのレコードにメンバーというフィールドコードを探して、値がなかったらという意味です。
マスターアプリ側ではありません。もともとの意図がわからずダミーでルックアップ元にフィールドコードを設定しました。
system
(system)
クローズされました:
2024 年 9 月 11 日午前 1:14
7
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。