<やりたきこと>
・顧客がFormBridgeに入力した直後に自社の営業担当がkintoneレコードを確認できるようにしたい。
<手順>
①自社の営業担当が、受注後に顧客へFormBridgeを入力してもらう。
②FormBridgeでは顧客に、自社営業担当のコードを選択いただき、顧客の入力情報に営業担当の情報(コード・名前・メールアドレス)が紐づいた状態で入力いただく。
<制約>
・kintoneの権限設定で営業担当は自分のレコードしか閲覧できない状態にする必要がある
・kintoneのレコードの権限設定はユーザ・組織・グループ・作成者・更新者のみしか指定できないが、FormBridgeではいずれも指定ができない。
<解決策 案>
kintoneの一覧画面にボタンを設け、営業が顧客のFormBridge入力後にkintone一覧画面のボタンをクリックすることで、
FormBridgeから入力された文字列フィールド「営業担当」をユーザー選択フィールド「営業名_ユーザー選択」にコピーし、最新の5レコードのみ取得させ、
営業が自担当の顧客のkintoneレコードを確認できる状態としたい。
<発生した問題>
文字列フィールドではなく、ログインユーザーのユーザー情報がユーザー選択フィールドに選択されてしまう。
知見のある方のご指摘をいただけると大変幸いでございます。よろしくお願いいたします。
実行したコードをコピー&ペーストしましょう
(function () {
"use strict";
var FIELD_CODE_TEXT = '営業担当氏名';
var FIELD_CODE_USER = '営業名_ユーザー選択';
var SUCCESS_MESSAGE = '更新しました。';
var ERROR_MESSAGE = '更新に失敗しました。';
var APP_ID = 35;
var fetchLatestRecords = function (appId, limit) {
return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
app: appId,
query: 'order by $id desc limit ' + limit
}).then(function (response) {
return response.records;
});
};
var fetchUserCode = function (username) {
console.log('Fetching user code for username:', username);
return kintone.api(kintone.api.url('/v1/users', true), 'GET', {
query: 'name = "' + username + '"'
}).then(function (response) {
if (response.users.length > 0) {
var userCode = response.users[0].code;
console.log('Fetched user code:', userCode);
return userCode;
} else {
throw new Error('ユーザーが見つかりません: ' + username);
}
});
};
var updateRecords = function (appId, records) {
var userPromises = records.map(function (record) {
var username = record[FIELD_CODE_TEXT].value;
return fetchUserCode(username).then(function (userCode) {
console.log('Updating record ID', record.$id.value, 'with user code', userCode);
return {
id: record.$id.value,
record: {
[FIELD_CODE_USER]: {
value: [{ code: userCode }]
}
}
};
}).catch(function (error) {
console.error('ユーザーコード取得エラー:', error);
throw error;
});
});
return Promise.all(userPromises).then(function (updatedRecords) {
return kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', {
app: appId,
records: updatedRecords
});
※なお、別文脈ですが、FormBridge×kViewerプレミアムプランによるトヨクモFormBridgekintone認証でのFormBridge上での閲覧制限などは実施済です。