いつも参考にさせていただいております。
営業日報アプリを作成して運用しています。
この中で「ユーザー選択」フィールドで作成した項目(ログインユーザー)について、レコード一覧画面上ではユーザー表示名が表示されていますが、「ファイルに書き出す」機能を利用してCSV出力した結果ではログイン名(ID)が出力されてしまいます。
この時、ユーザー表示名を出力する方法はないでしょうか?
cybozu.com developer network を参照したところ、「https://cybozudev.zendesk.com/hc/ja/articles/203605844」で参考になりそうなトピックスが掲載されていましたが、最終まで解決できていない模様なのと、関連レコード設定でkintoneログインユーザーテーブルが設定できないため、どうしたものかと思案している状況です。
ご教示いただけると幸いです。
teraさん
サイボウズスタートアップスの武井です。
端的に申し上げると、「標準CSV出力」で「ユーザー選択」フィールドのユーザー表示名を出すことは不可能だと考えています。
これはもう、kintoneの標準CSV出力の仕様で、ユーザー選択=ID出力になってしまっているからです。
ここからは私が思いつく限りの解決策ですが、
標準CSV出力で表示するためのユーザー表示名を格納する別フィールドを用意する方法ではいかがでしょうか。
JavaScriptカスタマイズになりますが、
全く同名ラベルの文字列フィールドを用意し、
showイベントではこれをsetFieldShownしておきます。
保存時イベントで、対象のユーザー選択フィールドをなめ、
登録されているユーザーの名称を格納していきます。
そして、CSV出力時には、こちらの文字列フィールドの方を出力させます。
別フィールドを用意したくない場合は、
ご提示のデベロッパーネットワークの記事のように自前でCSV出力機能を作成し、
ユーザー選択フィールドについては、
“ユーザー選択”.value[n].nameを出力するようにすればよろしかろうと思います。
ご返信ありがとうございます。
ご提示いただいた「標準CSV出力で表示するためのユーザー表示名を格納する別フィールドを用意する方法」か「自前でCSV出力機能を作成する方法」かのいずれかでトライしてみたいと思います。
お世話になります。「標準CSV出力で表示するためのユーザー表示名を格納する別フィールドを用意する方法」でテストしていますが、うまく動作しないので、ご支援いただけると幸いです。
作成したフォームでは、”活動担当者” ←「ユーザー選択」、”活動担当者名”←「文字列(1行)」の2つのフィールドを用意して、下記のスクリプトを作成しました。
結果、”活動担当者”のフィールドにユーザーを1つ入力して保存すると、”活動担当者名”のフィールドには、”[object object]”という値がセットされ、3つ入力して保存すると、”活動担当者名”のフィールドには、”[object object],[object object],[object object]”という値がセットされてしまいます。
本来は、ユーザーIDがセットされるようにしたいのですが、どうしたらうまく動くでしょうか。
また、最終的には、セットされるのはユーザーIDではなく、kintoneで登録されているユーザー表示名をセットしたいのです。
初心者のため、よろしくお願いいたします。
(function() {
“use strict”;
kintone.events.on([‘app.record.create.submit’, ‘app.record.edit.submit’], function(event) {
var record = event.record;
var tempname = “”;
var member = record[‘活動担当者’][‘value’];
for (var i = 0; i < member.length; i++) {
if (tempname == “”) {
tempname += record[‘活動担当者’][‘value’][i];
} else {
tempname += “,” + record[‘活動担当者’][‘value’][i];
}
}
record[‘活動担当者名’][‘value’] = tempname;
return event;
});
})();
teraさん
cstapの瀧ヶ平です。
ユーザー選択フィールドのフィールド形式の問題ですね
record['活動担当者']['value'][i]
を
record['活動担当者']['value'][i].name;
に修正すれば問題なく動作するかと思います
teraさん
record.活動担当者.value[n].nameでユーザー名が取得できます。
パッと見たところ、nameの位置が異なるようです。
早速のご教示ありがとうございます。
実際にやってみて、.name を追加するだけでユーザー名がセットされるようになりました。
う~ん、随分試行錯誤をした結果だったのですが、数分で解決されるとは…難しい
また、[i]の位置が異なるとのご指摘ですが、本来の位置はどこがよいのでしょうか。
もう一つ、今後のために教えていただきたいことは、
record[‘活動担当者’][‘value’][i].name;
と
record.活動担当者.value[i].name;
とは書き方が随分と異なるようです。今後勉強してくのであればどちらの記載がよろしいのでしょうか。
teraさん
異なるのは[i]でなくnameの位置でしたね。すみません!
ドット記法とブラケット記法については、
基本はドット記法でしょう。(私見)
ただ、ブラケット記法は[i]でもわかる通り、変数でアクセスすることができます。
大きい違いはそこだけだと思います。
武井さん、瀧ヶ平さん
ドット記法とブラケット記法ですか。ハードル高そうです(+o+)
頑張って勉強していこうと思います。今後ともよろしくお願い申し上げます。
ありがとうございました。