他のアプリから値取得して、別アプリのレコード追加時に特定フィールドのセット。

皆様、恐れ入りますがご教示いただけますと幸いです。

ユーザーマスタ(appid:170)

表示氏名(文字列、自動計算あり)

よみがな(文字列)

申請アプリ

表示氏名(文字列、自動計算あり)

よみがな(文字列)

表示氏名をキーにして、申請アプリのレコードが追加されたときに

ユーザーマスタのよみがなを取得して、申請アプリのよみがなフィールドに

その取得した値をセットしたいのですが、うまく出来ません。

私、初心者で大変恐縮ですが何卒よろしくお願いいたします。

 

(function () {
“use strict”;
var events = [
‘app.record.create.show’,
‘app.record.edit.show’,
‘app.record.create.change.表示名’,
‘app.record.edit.change.表示名’
];
kintone.events.on(events, function(event) {
var record = event.record;
var appId = 170;
var recordId = record[‘表示名’].value[0].name;
kintone.api(‘/k/v1/records’, ‘GET’, {
app: appId,
query: ‘表示名 = "’ + recordId + ‘"’,
fields: [‘よみがな’],
},
function(resp) {
var group1 = resp[‘records’][0][‘よみがな’][‘value’];
var record = kintone.app.record.get();
record[‘record’][‘よみがな’][‘value’] = group1;
kintone.app.record.set(record);
});
return event;
});
})();

yuichiさん

こんにちは。プロジェクト・アスノートの松田と申します。

本件、カスタマイズではなく、申請アプリにルックアップフィールドを置いて、

ユーザーマスタの情報をコピーしてくる、というやり方ではだめでしょうか?

表示氏名をルックアップし、同時によみがなをコピーしてくる、という設定です

松田様

ご回答ありがとうございます。

ルックアップですと、「取得する」という動作が発生するかと思いますが

そのような動作をユーザーにさせたくないという前提がございます。

言葉足らずですみません。

ですので、カスタマイズという選択に至りました。

yuichiさん

状況理解しました。

ただ、普通に入力させたテキストで他アプリを検索しにいくということであれば、入力のゆらぎの問題が気になるところですが。

 

上記のソースを実行して、どのようなエラーが出たのかがわからないので、すべてがあたっているかどうかはわかりませんが、ざっと見て気づいたことは以下の点です。ご参考になれば幸いです。

  1. kintoneのAPIの処理は非同期のため、以下のリンクを参照のうえ、Promiseを使った処理にする
    https://developer.cybozu.io/hc/ja/articles/204564604-kintone-API-%E3%81%A7-Promise-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86-
  2. kintone.events.on のインベントハンドラ内で kintone.app.record.set および kintone.mobile.app.record.set を実行することはできません。
    これも上記のリンク先の内容を参照に見直されたらいいかと思います。
    https://developer.cybozu.io/hc/ja/articles/201942014-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E8%A9%B3%E7%B4%B0%E6%83%85%E5%A0%B1%E5%8F%96%E5%BE%97#step4

松田様

ご連絡ありがとうございます。とても助かります。

アドバイスいただいた点を見直してみます。