レコード保存後に自動でステータス更新!

著者名:三宅 智子(サイボウズ)

目次

はじめに

申請系のアプリでよくステータスの回し忘れに後から気付いて慌ているという経験はありませんか?
実はサイボウズ社内でもよくあります。

通知機能を使って「ステータスが未処理だったら、○日後に通知を飛ばす」など設定することでリマインドさせることもできますが、ここでは別の方法を紹介します。
地味ですが、あるとちょっとうれしい Tips です。

2016 年 8 月のアップデート でレコード追加/編集画面で保存に成功した後のイベントが追加されたということで、今回はレコード保存後に自動でステータス更新をする方法の説明です。
保存成功後のイベントは以下の 3 種類ですが、ここではレコード追加画面で保存に成功した後のイベントを利用して実装します。

完成イメージ

レコード追加画面の保存成功後に、休暇申請アプリのアクション「申請する」が自動で実行され、ステータスが「申請中」に進むことを確認できます。
(確認のために本 Tips では成功後の alert を出しています)

レコード追加画面はこんな感じです。

アプリの準備

今回は、アプリストアから「休暇申請」アプリを追加し、次のとおりフィールドを設定しました。
他のフィールドは今回のカスタマイズには影響しないので、自由に設定していただいてかまいません。

フィールド名 フィールドコード フィールドタイプ
承認者 authorizer ユーザー選択

PC 用の JavaScript ファイル

詳細設定から「JavaScript / CSS によるカスタマイズ」を開き、以下のソースコードをエディタに貼り付けて、ファイルをアップロードしてください。

ソースコード

以下のソースコードを記述します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*
 * Auto status update of sample program
 * Copyright (c) 2016 Cybozu
 *
 * Licensed under the MIT License
*/
(() => {

  'use strict';

  // レコード追加画面の保存成功後イベント
  kintone.events.on('app.record.create.submit.success', (event) => {
    const record = event.record;
    const appId = event.appId;
    const recordId = event.recordId;
    const authorizer = record.authorizer.value[0].code;

    // レコードのステータス更新API
    const body = {
      app: appId,
      id: recordId,
      action: '申請する',
      assignee: authorizer,
      revision: 1
    };
    return kintone.api(kintone.api.url('/k/v1/record/status', true), 'PUT', body).then((resp) => {
      alert('申請するボタンを実行しました');
      return event;
    }, (error) => {
      alert(error.message);
      return event;
    });
  });
})();

プロセス管理の作業者は配列ではなく文字列なので、承認者フィールドに複数人入っていたとしても 1 人目しか実行できない点、ご注意ください。

関連 Tips

最後に

今回は レコード追加画面で保存に成功した後のイベント を使ってステータスを自動更新する方法を紹介しました。
保存後に自動採番をする方法や、プロセス管理実行時にフィールドの値を入力する方法などの関連 Tips などもありますので、ぜひお試しください。

information

この Tips は、2016 年 8 月版 kintone で動作を確認しています。