12月召开的kintone devCamp 2015中大获好评的部署API讲座的Tips大公开!
kintone devCamp 2015的召开报告如下:
kintone devCamp 2015的召开报告一(暂时只有日本版)
kintone devCamp 2015的召开报告二(暂时只有日本版)
部署API并不仅仅用于应用的部署,还有其他各种各样的使用方法。下面将为大家介绍可以在kintone应用的运用里使用(可能!?)的两个范例。。
动作环境
1. 输出整合应用的列表
使用kintone作成应用,无法知道哪个应用和哪个应用的整合(lookup、关联记录)吧。
这个时候如果打开一个个应用的设置页面确认・・・可以想象这是多么累人的事情吧。
因此,我写了个使用部署API输出整合应用的列表程序。
代码
#!/bin/sh # 域名 DOMAIN="xxxx.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的保存目标
使用以下的命令执行shell脚本。
$ sh ./relation.sh
执行结果
以下是执行结果的范例。
下面是第二次执行结果的范例。由于以前的执行不存在的应用为对象外。
2.输出使用着JavaScript/CSS文件的应用列表
第二个为使用了JavaScript / CSS自定义的应用的列表输出。
代码
#!/bin/sh # 域名 DOMAIN="xxxx.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的保存目标
使用以下的命令执行shell脚本。
$ sh ./customize.sh
执行结果
下面为执行结果。
下面为第二次的执行结果范例。因以前的执行不存在的应用为对象外。
最后
这次使用部署API,在GUI上看,收集了大量的情报。对于整理应用的效果很好,大家可以试试看。
如果能为大家的kintone运用管理LIFE带来方便就太好了。