LoginSignup
1
1

More than 3 years have passed since last update.

LINE WORKS のカスタムフィールドを使う

Last updated at Posted at 2019-07-23

LINE WORKS v2.6 でアドレス帳の"カスタムフィールド"が追加されました。
これを使うと、アドレス帳で各メンバーの表示に「特技」のような項目を作ったり、別の Web サービスのプロフィールページへのリンクを追加することができます。
ただし、カスタムフィールドの設定は API のみで提供されていることに注意が必要です。
Python での利用サンプルと注意点についてまとめました。

事前準備

カスタムフィールドの利用には、ドメインでいくつかの設定変更が必要です。

ExternalKey の設定

各メンバーには、事前に Eternal Key を付与しておきます。Developer Consoleの組織連携メニュー内 「構成員 External Key Mapping」 から CSV で一括設定が可能です。

組織連携設定

利用には事前に Developer Console から「組織連携使用設定」 を有効にし、「組織/構成員」を On に切り替える必要があります。
組織連携使用設定

こちらを切り替えるとメンバー管理がすべて API に切り替わり、管理画面からメンバーの追加や編集などが行えなくなりますので注意してください。カスタムフィールド設定後に設定を Off にしても設定した値は
維持されるので、一時的に On にするだけでも良いと思います。

カスタムフィールドの定義

まずカスタムフィールドを定義します。各APIの説明はこちら

設定サンプル

ためしに Python3.6 でカスタムフィールドの定義の操作を書いてみました。エラー処理など入れてなくて諸々が適当なのはご容赦ください。

customfield.py
import json
import requests

def customfield(Method,SchemaKey,**Schemeparams):
    #リクエスト URL の作成
    apiheadurl =  'https://apis.worksmobile.com/r' 
    apicategory = 'organization/v2'
    apitarget= 'customfields'
    url= '/'.join([apiheadurl,{API ID},apicategory,'domains',{Domain ID},apitarget,SchemaKey])

    #request header
    header = {
        'consumerKey': {Server API ConsumerKey},
        'Authorization': 'Bearer ' + {Server API 認証 Token},
        'Content-Type': 'application/json',
        'charset': 'UTF-8' 
        }

    #request body
    payload = Schemeparams

    #Method に応じてカスタムフィールドに対する操作を決定
    if Method == 'POST':
            #name / type 必須。order,displayClients[PC_WEB/PC_APP,MOBILE] 任意。
            r = requests.post(url, headers = header,data = json.dumps(payload))
            return r
    elif Method == 'DELETE':
            #引数不要
            r = requests.delete(url, headers = header)
            return r
    elif Method == 'GET':
            #引数不要
            r = requests.get(url, headers = header)
            return r.json()
    elif Method == 'PATCH':
            #name, order, displayClients[PC_WEB/PC_APP,MOBILE] 任意
            r = requests.patch(url, headers = header,data = json.dumps(payload))
            return r
    else:
        #Method指定を間違えた場合には0を返す
        return 0

これでカスタムフィールドの定義の追加、削除など一連の操作を定義しました。

カスタムフィールドの設定例

これを使って 「特技」という名前のフィールドを追加するならこのようなイメージです。

customufield('POST','Specials',name='特技',type='STRING',order=1)

カスタムフィールドの割り当て

各メンバーのカスタムフィールドの値も、API のみで設定可能です。
メンバーの部分修正 API を使った対応例はこのようになります。

def Member_customfield(ExternalKey,SchemaName,SchemaValue):
    #リクエスト URL の作成
    apiheadurl =  'https://apis.worksmobile.com/r' 
    apicategory = 'organization/v2'
    apitarget= 'users'
    url= '/'.join([apiheadurl,{API ID},apicategory,'domains',{Domain ID},apitarget,ExternalKey])

    header = {
        'consumerKey': {Server API ConsumerKey},
        'Authorization': 'Bearer ' + {Server API 認証 Token},
        'Content-Type': 'application/json',
        'charset': 'UTF-8' 
        }

    payload = {
        'customField':{
            SchemaName:[
                {'value':SchemaValue}
            ]
        }
    }

    r = requests.patch(url, headers = header,data = json.dumps(payload))
    return r

カスタムフィールドの割り当て例

ためしに先ほどの特技を設定するとこのような形です。

Member_customfield({メンバーのExternalKey},'Specials','卓球')

以上、カスタムフィールドの設定例でした。

メンバー画面上の表示

このように、プロフィールの最下段にカスタムフィールドが追加されます。
customfield.png

1
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
1
1