kintone devCamp 2015で好評だったデプロイAPI講座のTipsを大公開!
kintone devCamp 2015の開催報告は以下のとおりです。
デプロイAPIはアプリのデプロイだけでなくさまざまな使い方が可能です。
ここではkintoneアプリの運用に使える(かもしれない!?)サンプルを2つ紹介します。
kintoneでアプリを作成しだすと、どのアプリとどのアプリが連携(ルックアップ、関連レコード)しているのか分からなくなりますよね。
そんな時に1つずつアプリの設定画面を開いて確認…想像しただけで気が遠くなります。
そこでデプロイAPIを使って連携アプリの一覧を出力するプログラムを書いてみました。
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
#!/bin/sh
#
# Export relation apps using deploy API
# Copyright (c) 2016 Cybozu
#
# Licensed under the MIT License
# https://opensource.org/license/mit/
#
# ドメイン名
DOMAIN="{subdomain}.cybozu.com"
# 認証情報
# 「アカウント:パスワード」をbase64でエンコードした値
AUTH=""
# 調査を開始するアプリID
# (アプリIDの最小値)
APP=5
# 調査を終了するアプリID
# (アプリIDの最大値)
APP_LIMIT=10
# 存在しないアプリIDの保存先
DELETED_INFO_FILE=./deleted.txt
# アプリIDとアプリ名を出力
GET_APP_NAME() {
NAME=`curl -s \
-X GET \
-H "X-Cybozu-Authorization: $AUTH" \
"https://${DOMAIN}/k/v1/app/settings.json?app=${1}" |
jq .name |
sed 's/"//g'`
echo -n "${1}(${NAME})"
}
while [ $APP -le $APP_LIMIT ]
do
# 以前の実行で存在しなかったアプリは対象外
EXISTS=`grep "^${APP}$" $DELETED_INFO_FILE 2>/dev/null`
if [ "x$EXISTS" != "x" ]
then
APP=$(($APP+1))
continue
fi
RES=`curl -s \
-X GET \
-H "X-Cybozu-Authorization: $AUTH" \
"https://${DOMAIN}/k/v1/app/form/fields.json?app=${APP}"`
# 存在するアプリを対象に
if [ `echo $RES | jq .revision` != "null" ]
then
REL_APPS=`echo $RES | jq '.properties[] | .lookup.relatedApp.app, .referenceTable.relatedApp.app | select(type != "null")' |
sort | uniq | sed 's/"//g'`
if [ "x$REL_APPS" == "x" ]
then
echo "${APP}: 関連アプリはありません。"
else
for REL_APP in `echo $REL_APPS`
do
GET_APP_NAME $APP
echo -n ": "
GET_APP_NAME $REL_APP
echo "を参照しています。"
done
fi
else
echo "${APP}: アプリが存在しません。"
echo $APP >> $DELETED_INFO_FILE
fi
APP=$(($APP+1))
done
exit 0
|
上記のコードを適当なファイル名で保存します。(例:relation.sh)
コメントに従い以下の値を修正します。
- ドメイン名
- 認証情報
- 調査を開始するアプリID
- 調査を終了するアプリID
- 存在しないアプリIDの保存先
以下のコマンドでシェルスクリプトを実行します。
下記が実行結果の例になります。
下記が2回目の実行結果の例になります。
以前の実行で存在しなかったアプリは対象外になります。
サンプル2:JavaScript/CSSファイル適用アプリの一覧出力
固定リンクがコピーされました
2つ目は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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
#!/bin/sh
#
# Export customize apps using deploy API
# Copyright (c) 2016 Cybozu
#
# Licensed under the MIT License
# https://opensource.org/license/mit/
#
# ドメイン名
DOMAIN="{subdomain}.cybozu.com"
# 認証情報
# 「アカウント:パスワード」をbase64でエンコードした値
AUTH=""
# 調査を開始するアプリID
# (アプリIDの最小値)
APP=5
# 調査を終了するアプリID
# (アプリIDの最大値)
APP_LIMIT=10
# 存在しないアプリIDの保存先
DELETED_INFO_FILE=./deleted.txt
# アプリIDとアプリ名を出力
GET_APP_NAME() {
NAME=`curl -s \
-X GET \
-H "X-Cybozu-Authorization: $AUTH" \
"https://${DOMAIN}/k/v1/app/settings.json?app=${1}" |
jq .name |
sed 's/"//g'`
echo -n "${1}(${NAME})"
}
while [ $APP -le $APP_LIMIT ]
do
# 以前の実行で存在しなかったアプリは対象外
EXISTS=`grep "^${APP}$" $DELETED_INFO_FILE 2>/dev/null`
if [ "x$EXISTS" != "x" ]
then
APP=$(($APP+1))
continue
fi
RES=`curl -s \
-X GET \
-H "X-Cybozu-Authorization: $AUTH" \
"https://${DOMAIN}/k/v1/app/customize.json?app=${APP}"`
# 存在するアプリを対象に
if [ `echo $RES | jq .revision` != "null" ]
then
CUSTOM_FILES=`echo $RES | jq '.[][]?[] | .file.name, .url | select(type != "null")' |
sort | uniq | sed 's/"//g'`
if [ "x$CUSTOM_FILES" == "x" ]
then
echo "${APP}: JS/CSSカスタマイズは利用していません。"
else
for CUSTOM_FILE in `echo $CUSTOM_FILES`
do
GET_APP_NAME $APP
echo ": ${CUSTOM_FILE} を利用しています。"
done
fi
else
echo "${APP}: アプリが存在しません。"
echo $APP >> $DELETED_INFO_FILE
fi
APP=$(($APP+1))
done
exit 0
|
上記のコードを適当なファイル名で保存します。(例:customize.sh)
コメントに従い以下の値を修正します。
- ドメイン名
- 認証情報
- 調査を開始するアプリID
- 調査を終了するアプリID
- 存在しないアプリIDの保存先
以下のコマンドでシェルスクリプトを実行します。
下記が実行結果になります。
下記が2回目の実行結果の例になります。
以前の実行で存在しなかったアプリは対象外になります。
今回はデプロイAPIを使って、GUIでみるには一苦労な情報を収集してみました。
アプリの棚卸しなどに効果を発揮しますのでご活用ください。
皆さんのkintone運用管理LIFEが少しでも快適になれば幸せです。