いつもお世話になっております。
以下、処理が上手いかないためご教示いただきたく存じます。
サブテーブル内のユーザー選択フィールドより選択したユーザーの優先する組織、親組織を取得し
同じサブテーブル内の文字列一行フィールドに入れたいと思ています。
値は取れていますが文字列に入れる際に、コピーされる場合とされない場合がございます。
一瞬文字列に値が表示されることがあるのですがその後にすぐに消えてしまいます。
以下、ソースです。
いつもお世話になっております。
以下、処理が上手いかないためご教示いただきたく存じます。
サブテーブル内のユーザー選択フィールドより選択したユーザーの優先する組織、親組織を取得し
同じサブテーブル内の文字列一行フィールドに入れたいと思ています。
値は取れていますが文字列に入れる際に、コピーされる場合とされない場合がございます。
一瞬文字列に値が表示されることがあるのですがその後にすぐに消えてしまいます。
以下、ソースです。
kintone初心者さん
こんにちは。ひよこです。
for 文で 非同期処理(COMMON.ORGANIZATION の部分)を回すと、非同期処理の完了を待たずにループが進むことが原因かと思われます。
https://developer.cybozu.io/hc/ja/community/posts/204669873 の1番目の回答を参考に、以下の流れでやれば問題ないかなと思います。
ただ、やりたいことと若干違うのかもしれませんが、行追加されたことをトリガーにするのではなく、
テーマメンバーテーブル のメンバー名_テーマメンバーTL以外が変更されたときをトリガーにしても良いのではと思いました。
そうすると、ループを回す必要がなく、
行追加されたときに、値が変更されていない行に対しても、毎回「所属組織」や「所属グループ」を変更するといったことがなくなります。
変更された行の他のフィールドを変更するには、
event.changes.row.value.フィールドコード.value に値を代入して return event します。
https://developer.cybozu.io/hc/ja/articles/201941984#step3
var events = ['app.record.create.change.メンバー名_テーマメンバーTL以外', 'app.record.edit.change.メンバー名_テーマメンバーTL以外'];
kintone.events.on(events, function(event) {
// 変更された「メンバー名_テーマメンバーTL以外」の値を取得
var userCode = event.changes.field.value[0].code;
// userCode の所属組織や所属グループを取得する処理を行う
// event.changes.row.value.所属グループ.value に取得した所属グループの値を代入する
// event.changes.row.value.所属組織.value に取得した所属組織の値を代入する
// 画面に反映
return event;
});
ひよこさん
こんにちは。kintone初心者です。
非同期処理の完了を待っていないことが原因とのこと承知いたしました。
>ただ、やりたいことと若干違うのかもしれませんが、行追加されたことをトリガーにするのではなく、
>テーマメンバーテーブル のメンバー名_テーマメンバーTL以外が変更されたときをトリガーにしても良いのではと思いました。
行いたい処理はひよこさんがおっしゃる上記の部分でしたので大変助かります。
URL記載等とても詳しくわかりやすいご説明ありがとうございました。
ご教示いただいた方法で試してみます。
この度はありがとうございました。