画像付きExcelをkintoneに移行してみる

Excelのデータをkintoneに登録したい！！
もちろん、[Excelの文字データのみであれば、kintoneに一括登録する](https://jp.cybozu.help/k/ja/user/using_app/import_records/import_csv.html)ことはブラウザ上からもできます。

が、そのExcelに画像が貼られたファイルの場合はどうでしょう。
文字データと、それに関連付けて画像ファイルも一括登録させたいですね。


**例えば、このようなExcelファイル**
![ramen1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100494/350807be-0727-0e66-286c-b1218a10b3c3.png)



> 文字データと、それに関連付けて画像ファイルも一括登録させたい

これを実現してくれるツールがあるということで、[separator-excel](https://github.com/ochi51/separator-excel) と  [cli-kintone](https://github.com/kintone/cli-kintone) を使って試してみました。

## 流れ

1. [separator-excel](https://github.com/ochi51/separator-excel) で、CSVファイルと画像ファイルに分離する
2. kintoneで、アプリを作成する
3. [cli-kintone](https://github.com/kintone/cli-kintone) で、kintoneにデータをインポートする

ツールやサービスはこんな流れで進めてみます。
それでは早速、やってみよう。

## separator-excelで、CSVファイルと画像ファイルに分離する
### PHPなどの環境を構築する
[separator-excel](https://github.com/ochi51/separator-excel) のREADME を参考に、「必須環境」をインストールしていきます。

```
// MacOSの場合
brew install git
// パッケージを探す
brew search php74 
brew install php@7.4
brew install composer
```


インストールされていることも兼ねて、Version確認しましょう。

```
git --version
php -v
composer -V
```

PHPインストール後にVersionが変わらない場合には、[PATHを通そう](https://qiita.com/tana08/items/046cba8e23d32599ee4a)を参考に。

```
$ php -v
PHP 7.4.10 (cli) (built: Sep  3 2020 18:20:30) ( NTS )
```
よし、PHPのVersion7.4なので、動くはず。


###separator-excelをインストールする
[インストール](https://github.com/ochi51/separator-excel#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)手順に沿って、インストールしていきます。

###実行してCSVファイルと画像ファイルを作る

インポートする [ramen.xlsx](https://drive.google.com/file/d/1YR0kvrRPPtwXNtAyuQcVUjHdESAo1DbE/view?usp=sharing) Excelファイルを以下のディレクトリにダウンロードしておきましょう。

- ramen.xlsx: separator-excel/tests/_data

separator-excelに指定する出力パラメータは以下のようにしました。

- csv: tests/_output/export.csv
- files directory: tests/_output

```
$ php ./bin/separator-excel tests/_data/ramen.xlsx -o tests/_output/export.csv -b tests/_output/
```

### 実行結果を確認する
export.csv と 画像ファイル一式が無事に出力されました〜〜。
![ramen2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100494/4366e9ff-8e58-4096-3111-476f9c7db268.png)

export.csv の中身はこんな感じ。
![ramen3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100494/b4b116d1-22d0-48f8-8ab7-7051dd3a9ad2.png)


## kintoneアプリを作る
kintoneの環境を用意し、出力した[CSVファイルからkintoneアプリを作成](
https://jp.cybozu.help/k/ja/user/create_app/app_csv/add_app_csv.html)してみます。
kintoneの環境がない方は「[kintone開発者ライセンス](https://developer.cybozu.io/hc/ja/articles/200720464)」を申し込んでください。

### CSVファイルを読み込んでkintoneアプリを作成する
読み込む文字コード、読み込むフィールドタイプなどをこのように設定しましょう。
![ramen4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100494/067291ab-7ab4-59a1-e2f3-e04098fd5e43.png)


### 添付ファイルフィールドを追加する
![ramen5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100494/1c8b179e-c4d7-aeef-8142-d5826c5c293d.png)


### 添付ファイルフィールドの設定を変更する
特にフィールドコードは重要です。これをCSVのフィールド名と合わせておかないと、インポートできなくなります。
![ramen6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100494/503b1677-75f7-dda3-b564-a1e7b06435eb.png)

### 他のフィールドコードも設定する
| フィールド名 | フィールドコード |
|:-----------|:------------|
| 場所       | 場所         |
| 感想       | 感想         |
| 星         | 星          |
| 写真       | 写真         |

### APIトークンを作成する
kintoneアプリの設定画面で、APIトークンを生成し、レコード追加をチェックします。（保存とアプリ更新も忘れずに）
ドメイン、アプリID、APIトークンはcli-kintoneで利用しますので、テキストエディタなどに記録しておきましょう。

![ramen8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100494/d30474f4-4d7a-10fa-a187-5d8da02770a8.png)


### データを削除する
いまは、画像ファイルが関連付けられていないデータが登録されているため、[レコード一覧から削除する](https://jp.cybozu.help/k/ja/user/using_app/delete_record.html) か、[レコードを一括で削除する](https://jp.cybozu.help/k/ja/user/using_app/delete_bulk.html) かの方法で、データを削除しましょう。
![ramen9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100494/1e232ba8-d11d-5cb3-a38c-b9fe36792a30.png)



## cli-kintone を使ってインポートする
OS環境にあった [cli-kintone](https://github.com/kintone/cli-kintone/releases) ファイルをダウンロードします。

separator-excel > tests に、cli-kintoneを配置しました。
次のように実行していきます。※MacOSの場合

```
$ cd separator-excel/tests
// <APP_ID>, <FQDN>, <API_TOKEN> は各環境で異なるので、値を設定してください。
$ ./cli-kintone --import -a <APP_ID> -d <FQDN> -e utf-8 -t <API_TOKEN> -f _output/export.csv -b _output
// 僕の環境ではAPIトークンはマスクしていますが、次のように実行しました
//$ ./cli-kintone --import -a 27 -d sample.cybozu.com -e utf-8 -t G7e~~~~~ -f _output/export.csv -b _output

```

実行すると、ログではインポートされている様子。

```
　[2020-09-21 10:13:47]: Start from lines: 1 - 6 => SUCCESS
　[2020-09-21 10:13:48]: DONE
```

kintoneアプリでも無事にデータとファイルがインポートされていました〜〜！！
![ramen10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100494/60ab6c2f-8bcf-8137-0853-8e666359912f.png)


## さいごに

今回は、Excelの中にあるデータと画像ファイルを、きちんと関連付けてkintoneにインポートしてみました。Excelで管理しているものはとても多いと思います。
社員名簿、不動産や賃貸リスト、建設現場、備品管理などなど。今あるExcelをクラウド共有サービスのkintoneに移行して、いつでも、どこでも、最新情報にアクセスできる環境づくりはいかがでしょうか。