新規投稿
フォローする

ルックアップ 絞り込みの初期設定をそのまま自動取得

お世話になります

過去の投稿を参考にコードを作成したのですが、

新規レコード追加時に取得の動作をしませんでした

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);
});
}
});

})();

 

1

5件のコメント

Avatar
harada
(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']) {

ルックアップする側のアプリにメンバーというフィールドコードがあり、値が入っていないときを指定しています。

 

0
Avatar
harada

おそらく実現されたいことは

Kintoneで他のアプリからユーザー選択の値を取得する - ponsuke_tarou’s blog
https://ponsuke-tarou.hatenablog.com/entry/2021/06/22/215117

に近いのではないかと思います。

1
Avatar
MK

harada 様

ご返信ありがとうございます。

①マスタ側にあるもの

 メンバー(文字列1行)

 メンバーアカウント(ユーザー選択)

 上長設定(ユーザー選択)

②ルックアップするほう

 絞り込みの初期設定→メンバーアカウントを次のいずれかを含む(ログインユーザー)に設定

 取得をすると、

 メンバー(ルックアップ)

 上長(ユーザー選択)のフィールドに反映

 

>・メンバー(文字列1行)エラー回避用ダミー は必要ということでしょうか?

慣れておらずすみません

1
Avatar
MK

harada 様

頂いたリンクがまさにやりたいことでした。

こちらを試したところ成功いたしました。

ありがとうございました

MKにより編集されました
1
Avatar
harada

1)ルックアップでは、ルックアップする側のユーザー選択の値を更新するというのはできないようです。設定画面でユーザー選択の項目が表示されない。

2)そのため、ルックアップで更新するのではなくJavascriptで直接更新するやり方が必要になります。

Kintoneで他のアプリからユーザー選択の値を取得する - ponsuke_tarou’s blog
https://ponsuke-tarou.hatenablog.com/entry/2021/06/22/215117

3)

>・メンバー(文字列1行)エラー回避用ダミー は必要ということでしょうか?

// ここの!record['メンバー']には作成したマスタのフィールドコードを入れています
if (!record['メンバー']['value']) {

は、Javascriptを実行したアプリのレコードにメンバーというフィールドコードを探して、値がなかったらという意味です。

マスターアプリ側ではありません。もともとの意図がわからずダミーでルックアップ元にフィールドコードを設定しました。

1
サインインしてコメントを残してください。