ユーザー選択後(名刺記載名)にメールアドレスを違うフィールド(アドレス)に表示する方法を教えていただけますでしょうか?
また、同じ方法でサイボウズにユーザー登録されている社員番号とか取得することは可能でしょうか?
以下のプログラムは記載したのですが、
結果は「{"codes":[{"code":"aaa@bbb","name":"ヤマダ太郎"}]}」
で今回はcodeの部分だけを取得したいです。
(function () {
"use strict";
function dispFields(event) {
var sWFNO = event.record["WF番号"]["value"];
var record = event.record;
switch (sWFNO){
case "SOU010":
var adress= {
codes: record['名刺記載名']['value']
};
record['アドレス']['value'] = JSON.stringify(adress);
break;
}
return event;
}
var targetEvents = [ "app.record.create.change.名刺記載名" ];
kintone.events.on(targetEvents, dispFields);
})();
13件のコメント
shima様
お世話になっております.
cstapの江田と申します.
公式ドキュメントは見当たりませんが、「api path: '/v1/users'」で取得できるかと思います。
emailの箇所をemployeeNumberにすると社員番号が取れるかと思います。
ご連絡が遅くなり申し訳ありません。
ご教授頂いたソースで取得できました。
「api path: '/v1/users'」というのがあったんですね!
勉強になりました。ありがとうございました
一部ユーザーを選択した場合、Uncaught (in promise) TypeError: Cannot read property 'email' of undefined
になるのですが、サイボウズのユーザー情報のEmailではなく、違う箇所を見ているのでしょうか?
shima様
お世話になっております.
対象のユーザーを取得できていないのかもしれません.
公式のAPIではないなので,取得できる条件などもわからないです.
提案しておきながら,お力になれず申し訳ございません.
8行目と9行目の間に
と記述して,コンソール画面を見れば,どのユーザーが取得できているかは確認できます.
コンソール画面の見方
江田様
お世話になります。
consoleで確認すると
100行は取得できているみたいですね。
なぜ100行しか取れないかは不明ですが・・・
「api path: '/v1/users'」というものがあるのも知ったのでその点大きな収穫でした
色々ご教授頂きありがとうございました!
shima さま
小野間と申します。
公式のドキュメントはユーザーエクスポートAPIだと思います。
その中でリクエストパラメータに最大100とあるので、100行しか取れないのは仕様かと。
既にご存知かもしれませんが、ご参考までに。
小野間様
お世話になります。
100行しか取れないんですね・・・
全件取れると便利なんですけど仕様であれば仕方ないですね。
情報ありがとうございました!
横からすみません。
ユーザーエクスポートAPI、offsetの指定ができるみたいです。
ループ処理にして、2回目はoffsetを101、3回目はoffsetを201としていったら全件とれないでしょうか?
ループ処理は、レコード取得の「手法1:シンプルなやり方」の書き方が参考になると思います。
https://developer.cybozu.io/hc/ja/articles/360000826766
※レコード一括取得APIはoffsetがquery内なので、そのあたりユーザーAPIに合わせて書き換えてください。
shima 様 たまご 様
確かに「省略時には最大100」でオフセットの指定がありますね。
大変失礼いたしました。
小野間さん たまごさん
色々ご教授ありがとうございます。
江田様からご教授頂いたソースを元に色々試してはいるのですが、
うまく実行できないのでもう少しがんばってみます!
function dispFields(event) {
var sWFNO = event.record["WF番号"]["value"];
var record = event.record;
case "SOU010":
if(event.record.名刺記載名.value.length !== 1) return;
kintone.api(kintone.api.url('/v1/users', true), 'GET', {}).then(function(response){
event.record.アドレス.value = response.users.find(function(user){
return user.name === event.record.名刺記載名.value[0].name;
}).email;
kintone.app.record.set(event);
});
break;
caseの直後に
var offset = opt_offset || 0;
var records = opt_records || [];
var params = {email:'order by $id asc limit 500 offset ' + offset};
を追記し
if (resp.records.length === 500) {
と
return dispFields(offset + 500, records);
を追記しているのですが、
ifで500件か判断して
500じゃなければオフセットに500足しているのかと思うのですが、
違うのでしょうか?
function fetch(opt_offset, opt_records) {
もcaseの中に入れています
自己解決いたしました。
長期にわたり皆さんにご教授頂き有難うございました。