使用部署API进行kintone应用的运用管理

cybozu发表于:2017年02月23日 11:35:40更新于:2019年01月31日 14:41:43

12月召开的kintone devCamp 2015中大获好评的部署API讲座的Tips大公开!

kintone devCamp 2015的召开报告如下:

部署API并不仅仅用于应用的部署,还有其他各种各样的使用方法。下面将为大家介绍可以在kintone应用的运用里使用(可能!?)的两个范例。。

动作环境

  • Linux之类的shell脚本、jq运行的环境 (安装方法可参考这里)(暂时只有日本版)

  • 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

执行结果

以下是执行结果的范例。

00158aff71350aae6fcd2648a5accc5

下面是第二次执行结果的范例。由于以前的执行不存在的应用为对象外。

00158aff716bd28fc6abb0f9df7a598

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

 

执行结果

下面为执行结果。

00158aff71963c00b76805f4787ea0e

下面为第二次的执行结果范例。因以前的执行不存在的应用为对象外。

00158aff71d773243533db503aab613

最后

这次使用部署API,在GUI上看,收集了大量的情报。对于整理应用的效果很好,大家可以试试看。

如果能为大家的kintone运用管理LIFE带来方便就太好了。