3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【kintone】レコード作成時に自動で任意の作業者を設定する

Posted at

はじめに

本記事のレベル感

以下ができる・わかると進めやすいと思います。

  • JavaScriptの基本構文がわかる
  • kintoneでアプリを作成できる
  • kintoneの標準設定ができる
  • kintoneカスタマイズを少しだけ理解できる

とはいえやってみるなかで、できるようになることも多いと思うので参考になれば幸いです。

kintoneのプロセス管理とは

kintoneにはプロセス管理の機能があります。詳しくはKintone ヘルプ参照
簡単に説明すると各アクション(ステータス)ごとに作業者を設定でき、レコードごとに誰が何をしたかを管理できるものです。利用イメージとしては、申請・承認作業で使われることが多いと思います。

最初のステータスに設定できる作業者について

最初のステータスの時に設定できる作業者は以下になっています。

  • 作業者を設定しない
  • 作成者

標準機能では作業者を作成者以外を自動で設定することができません。
※レコードの作成後に手動で作業者を設定することは可能です。

そのため作業者を作成者以外で自動で設定する場合にはカスタマイズが必要になります。

今回の想定動作概要

アプリ内にユーザー選択を用意します。
新規レコード作成時にユーザー選択で選択された任意のユーザーを
最初のステータスの作業者に設定をする。

環境準備

今回はアプリに以下の設定をしています。

kintone フォーム設定

フォームから「ユーザー選択」フィールドを配置します。
配置したらフィールドに以下の設定をします。

  • フィールド名:「初期作業者」
  • フィールドコード:「初期作業者」
  • 「必須項目にする」: ON
ユーザー選択

kintone プロセス管理設定

一般設定のプロセス管理を設定します。

  1. プロセス管理の有効化にチェックします。
  2. ステータスを二つ用意します。今回は「未処理」と「完了」とします。
  3. ステータスごとの設定をします。今回はカスタマイズで作業者を設定するので「作業者を設定しない」を設定します。
    2.jpg

Javascriptカスタマイズ

Javascriptでカスタマイズします。
JavascriptをPC用のJavaScriptファイルに設定してください。
以下のコードを利用します。

sample.js
(function() {
    "use strict";

    //新規作成の保存成功時イベント
    kintone.events.on('app.record.create.submit.success', function(event) {
        //eventオブジェクトのプロパティ
        const appId = event.appId;
        const recordId = event.recordId;
        const record = event.record;

        //ユーザー選択「初期作業者」:ログイン名取得
        const worker = record['初期作業者']['value'][0]['code'];

        //本文
        const body = {
            'app': appId,
            'id': recordId,
            'assignees': [worker]
        };

        //レコードの作業者の更新
        return kintone.api(kintone.api.url('/k/v1/record/assignees.json', true), 'PUT', body, function(resp) {
            //console.log("成功");
        });
    });
})();


設定後に保存を行い、アプリの更新を行ってください。 これで新規にレコードを作成した場合に、ユーザー選択で選択したユーザーが作成者に設定されます。

解説

レコード追加画面の保存成功後イベント

//新規作成の保存成功時イベント
kintone.events.on('app.record.create.submit.success', function(event) {
});

今回はレコード追加画面の保存成功後イベント(app.record.create.submit.success)を利用しました。
保存成功後を利用する理由としては、後述の作業者の更新時にレコード番号を必要とするためです。
※モバイル版で利用する場合にはmobile.app.record.create.submit.successを利用します。

eventオブジェクトのプロパティ値取得

//eventオブジェクトのプロパティ
const appId = event.appId;
const recordId = event.recordId;
const record = event.record;

リクエストに利用する「アプリID」、「レコード番号」、
レコードの登録状況を取得する「レコードオブジェクト」を取得しています。

ユーザー選択に設定したユーザーを取得

//ユーザー選択「初期作業者」:ログイン名取得
const worker = record['初期作業者']['value'][0]['code'];

ユーザー選択に設定したユーザーのユーザーコードを取得します。
**['初期作業者']**はユーザー選択のフィールドコード名です。
**['value'][0]**はユーザー選択のフィールド形式は配列で取得されるため、一つ目の値を指定しています。
**['code']**はユーザーコードを指定しています。

フィールド形式については詳細に知りたい方は**こちら**を参考にしてください。

リクエストボディの作成

//本文
const body = {
  'app': appId,
  'id': recordId,
  'assignees': [worker]
};

リクエストボディの作成をしています。
先ほど取得した「アプリID」「レコード番号」「ユーザーコード」を設定しています。

レコードの作業者の更新

//レコードの作業者の更新
return kintone.api(kintone.api.url('/k/v1/record/assignees.json', true), 'PUT', body, function(resp) {
    //console.log("成功");
});

レコードの作業者を更新しています。
URIにはhttps://(サブドメイン名).cybozu.com/k/v1/record/assignees.json
HTTPメソッドはPUT、先ほどのbody(リクエストボディ)をセットしリクエストを行います。
成功するとreturnが行われ、作業者の設定が完了します。

リクエストボディを含む詳細の設定はレコードの作業者の更新をご確認ください。

最後に

参考一覧

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?