kintone スペース管理コマンド操作例

kintone スペース管理コマンドで、実際にスペース作成・照会・更新・削除操作を行なってみます。

# 概要

[chatGPT で kintone スペース管理コマンド作成](https://qiita.com/rex0220/items/2b0cbf91e07e20698515)で作成したコマンドを実際に使ってみます。
簡単にコマンドで、スペーステンプレートからアプリを含むスペースを作成できます。

- 環境
    - kintone: 開発環境
    - OS: mac
        - 今回は、mac ですが windows でも同様にできます
    - ターミナルで操作

# kintone 環境

kintoneシステム管理のアップデートオプションで開発中の新機能の下記を有効にする必要があります。

- 「スペースの情報を取得できるJavaScript API」を有効にする
- 「テンプレートを指定せずにスペースを作成できるREST API」を有効にする
ただゲストスペースについては、スペーステンプレート無しでは、スペース作成できませんでした。

# インストール

適当なディレクトリでリポジトリをクローンします。

```bash
git clone https://github.com/rex0220/kintone_manage_space.git
cd kintone_manage_space
```

依存関係をインストールします

```bash
npm install
```

# 環境変数ファイルの作成

今回は、環境変数ファイル .env を作成します。
プロジェクトディレクトリに .env ファイルを作成し、kintoneの資格情報を追加します。
別名ファイルで、複数の kintone 環境へも対応可能です。

※環境変数ファイルが指定されている場合は、環境変数よりも優先されます。
 オプション指定 > 環境変数ファイル > 環境変数

```.env
KINTONE_DOMAIN=your_domain
KINTONE_USERNAME=your_username
KINTONE_PASSWORD=your_password
```

# 動作確認　ヘルプ表示

インストールに問題なければ、ヘルプ表示出来ます。

```log
$ node manage_space.js -h
オプション:
      --version              バージョンを表示                             [真偽]
  -d, --domain               kintoneのドメイン                          [文字列]
  -u, --username             kintoneのユーザー名                        [文字列]
  -p, --password             kintoneのパスワード                        [文字列]
  -e, --envfile              .envファイルのパス                         [文字列]
  -i, --spaceId              既存のスペースID（指定時、ユーザーにはスペース管理
                             権限が必要）                               [文字列]
  -s, --spaceName            スペースの名前                             [文字列]
  -f, --fixedMember          スペースメンバーの固定    [真偽] [デフォルト: null]
  -c, --createAppPermission  アプリ作成権限（EVERYONE または ADMIN）
                                [文字列] [選択してください: "EVERYONE", "ADMIN"]
  -g, --guest                ゲストスペースの指定     [真偽] [デフォルト: false]
  -t, --templateId           スペーステンプレートIDの指定               [文字列]
  -a, --action               操作の種類（create, update, show, delete）
               [文字列] [選択してください: "create", "update", "show", "delete"]
      --help                 ヘルプを表示                                 [真偽]

操作の種類に応じて、スペースの作成、更新、表示、または削除を行います。
操作の種類はactionオプションで指定してください（create, update, show, delete）。

操作の種類を指定するためにactionオプションを使用してください（create, update, show, delete）。
```

# 空のスペース作成手順

最初に、空のスペースを作ってみます。
create でスペース作成し、show でスペース表示します。

## スペース作成と表示

```log
$ node manage_space.js -e .env -a create -s テストスペース１  
スペース「テストスペース１」を作成しています...
作成されたスペース「テストスペース１」のID: 295
スペース「テストスペース１」が正常に作成されました。ID: 295

$ node manage_space.js -e .env -a show -i 295
スペースID「295」の情報を表示しています...
スペース情報:
  スペース名: テストスペース１
  スペースID: 295
  ゲストスペース: いいえ
  スペースの状態: 公開
  メンバー固定: いいえ
  アプリ作成権限: EVERYONE
  作成者: レックス (Alex2013)
  更新者: レックス (Alex2013)
  スペース内のアプリはありません。
```

## スペース更新

スペース名とアプリ作成権限を変えてみます。

update で、スペース名とアプリ作成権限の変更を行います。
更新内容を確認の応答待ちになりますので、「yes」を応答します。

```log
$ node manage_space.js -e .env -a update -i 295 -s テスト更新 -c ADMIN
スペースID「295」を更新しています...
スペースID「295」の情報を表示しています...
スペース情報:
  スペース名: テストスペース１
  スペースID: 295
  ゲストスペース: いいえ
  スペースの状態: 公開
  メンバー固定: いいえ
  アプリ作成権限: EVERYONE
  作成者: レックス (Alex2013)
  更新者: レックス (Alex2013)
  スペース内のアプリはありません。

更新内容:
  スペース名: テストスペース１ -> テスト更新
  アプリ作成権限: EVERYONE -> ADMIN
このスペースを更新してもよろしいですか？ (yes/no): yes
スペースID「295」が正常に更新されました。

$ node manage_space.js -e .env -a show -i 295                         
スペースID「295」の情報を表示しています...
スペース情報:
  スペース名: テスト更新
  スペースID: 295
  ゲストスペース: いいえ
  スペースの状態: 公開
  メンバー固定: いいえ
  アプリ作成権限: ADMIN
  作成者: レックス (Alex2013)
  更新者: レックス (Alex2013)
  スペース内のアプリはありません。
```

## スペース削除

delete で、スペース削除を行います。
スペース削除確認の応答待ちになりますので、「yes」を応答します。

```log
$ node manage_space.js -e .env -a delete -i 295
スペースID「295」の情報を表示しています...
スペース情報:
  スペース名: テスト更新
  スペースID: 295
  ゲストスペース: いいえ
  スペースの状態: 公開
  メンバー固定: いいえ
  アプリ作成権限: ADMIN
  作成者: レックス (Alex2013)
  更新者: レックス (Alex2013)
  スペース内のアプリはありません。
このスペースを削除してもよろしいですか？ (yes/no): yes
スペースID「295」を削除しています...
スペースID「295」が正常に削除されました。

$ node manage_space.js -e .env -a show -i 295  
スペースID「295」の情報を表示しています...
Error status: 520
Error data: {
  "code": "OC_NO01",
  "id": "nBcRITmgGzkngg1Olacp",
  "message": "指定されたスペース(id: 295)が見つかりません。削除されている可能性があります。"
}
...
```

# スペーステンプレートによるスペース作成

スペーステンプレートを使って、アプリを含むスペースを作成します。

## スペース作成と表示

スペーステンプレートID 7 を指定して、スペースを作成します。
テンプレートに含まれるアプリも一緒に作成されます。

```log
$ node manage_space.js -e .env -a create -s テストテンプレート１ -t 7 
スペース「テストテンプレート１」を作成しています...
作成されたスペース「テストテンプレート１」のID: 296
スペース「テストテンプレート１」が正常に作成されました。ID: 296

$ node manage_space.js -e .env -a show -i 296                        
スペースID「296」の情報を表示しています...
スペース情報:
  スペース名: テストテンプレート１
  スペースID: 296
  ゲストスペース: いいえ
  スペースの状態: 公開
  メンバー固定: いいえ
  アプリ作成権限: EVERYONE
  作成者: レックス (Alex2013)
  更新者: レックス (Alex2013)
  スペース内のアプリ:
    1. 対象アプリ（データ生成調査用） (ID: 3102)
    2. 生成先アプリ（データ生成調査用） (ID: 3103)

```

## スペース更新

update で、メンバー固定を変更します。

```log
$ node manage_space.js -e .env -a update -i 296 -f
スペースID「296」を更新しています...
スペースID「296」の情報を表示しています...
スペース情報:
  スペース名: テストテンプレート１
  スペースID: 296
  ゲストスペース: いいえ
  スペースの状態: 公開
  メンバー固定: いいえ
  アプリ作成権限: EVERYONE
  作成者: レックス (Alex2013)
  更新者: レックス (Alex2013)
  スペース内のアプリ:
    1. 対象アプリ（データ生成調査用） (ID: 3102)
    2. 生成先アプリ（データ生成調査用） (ID: 3103)

更新内容:
  メンバー固定: いいえ -> はい
このスペースを更新してもよろしいですか？ (yes/no): yes
スペースID「296」が正常に更新されました。

$ node manage_space.js -e .env -a show -i 296     
スペースID「296」の情報を表示しています...
スペース情報:
  スペース名: テストテンプレート１
  スペースID: 296
  ゲストスペース: いいえ
  スペースの状態: 公開
  メンバー固定: はい
  アプリ作成権限: EVERYONE
  作成者: レックス (Alex2013)
  更新者: レックス (Alex2013)
  スペース内のアプリ:
    1. 対象アプリ（データ生成調査用） (ID: 3102)
    2. 生成先アプリ（データ生成調査用） (ID: 3103)
```

## スペース削除

delete で、スペース削除します。

```log
$ node manage_space.js -e .env -a delete -i 296
スペースID「296」の情報を表示しています...
スペース情報:
  スペース名: テストテンプレート１
  スペースID: 296
  ゲストスペース: いいえ
  スペースの状態: 公開
  メンバー固定: はい
  アプリ作成権限: EVERYONE
  作成者: レックス (Alex2013)
  更新者: レックス (Alex2013)
  スペース内のアプリ:
    1. 対象アプリ（データ生成調査用） (ID: 3102)
    2. 生成先アプリ（データ生成調査用） (ID: 3103)
このスペースを削除してもよろしいですか？ (yes/no): yes
スペースID「296」を削除しています...
スペースID「296」が正常に削除されました。
```