ゼロからでも迷わない！NetSuite CSVインポート超入門

現在、日本で生活している中国出身のエンジニアです。
業務では主にNetSuiteに携わっており、日々その可能性にワクワクしています！

NetSuiteにご興味のある方がいらっしゃいましたら、ぜひお気軽にお声がけください。
導入や活用のヒント、業務改善のアイデアなど、少しでもお力になれれば嬉しいです。

米国National Training Laboratoriesが提唱する「学習定着率ピラミッド」によれば、**「人に教えること」こそが、最も知識が定着する学び方（定着率90％！）** だそうです。Qiita投稿をきっかけとして、自分の知識を言語化し、共有することで、学びの質をもっと深めていきたいと思っています。

## はじめに
NetSuiteを使っていると、「大量のデータを手作業で入力するのが大変…」と感じたことはありませんか？
実は、顧客情報や商品情報、取引データなど、大量の情報を一括で登録・更新したい場面がたびたび出てきます。こんな時強力な武器になるのが、CSVインポート機能です。

私自身、最初は使い方がわからず苦労しましたが、正しく使えばとても便利な機能です。
本記事では、CSVインポートの使うタイミングや使い方を、初心者の方にもわかりやすくまとめてみました。

## この記事の対象者
**初心者の方、必見！**
大量データも、たった数クリックで一括登録・更新できるため、作業時間を"劇的"に短縮したい方、ぜひ読んでほしい記事です！


## この記事でわかる・できること
この記事からNetsuiteCSVインポートについて以下の部分を勉強できます。
・NetsuiteのCSVインポートとは
・いつ使うか
・CSVインポートの手順
・よくあるCSVインポートエラーと対処法


## NetsuiteのCSVインポートとは
NetSuiteのCSVインポートは、CSV形式（カンマ区切りファイル）を使ってデータを一括でNetSuiteに取り込む機能です。この機能を活用することで、顧客・商品・勘定科目などのマスターデータや、受注・請求書などのトランザクションデータを、効率的かつ正確に登録・更新することができます。


## いつ使うか
大量のデータを一括で登録・更新したいときにめちゃくちゃ便利です。基本的には「手入力じゃやってられない！」って場面で活躍します。
**CSVインポートが使える主なケース**
①データの一括作成

 :::note info
例：
・マスタデータ(従業員、部門、勘定科目、顧客、仕入先、アイテム等々)
・トランザクションデータ(発注書、注文書、請求書、支払請求書等々)
:::

②データの一括更新

 :::note info
例：
・価格改定（アイテムの価格を一括変更）
・顧客情報の変更（住所・電話番号など）	
・勘定科目の構成変更												
・在庫の調整や棚卸し
:::

③他システムとの連携
　他の業務システムから出力したCSVをNetSuiteに取り込む対応が可能です。

 :::note info
例：
・会計ソフト
・顧客管理ソフト
・商談管理ツール
:::
 
※こんな時には向いてません

:::note alert
例：
・入力するデータが極少ない場合。
・階層構造や関連情報が多いデータの場合。
　※項目のマッピング作業に多くの手間がかかります
・リアルタイムで他のシステムとデータ連携する必要がある場合。
　※CSVインポートではなくAPI（SuiteTalk REST/SOAPなど）を利用する方が適しています。
:::


## CSVインポートの手順
今回には、「複数部門の無効化」を例としてCSVインポートのやり方を説明します。具体的な手順は以下の通りです。
**① CSVファイルの準備**
　まず、インポートしたいデータをCSV形式で作成します。
 　部門を無効化するには、内部ID（主キー）を指定し、「無効化」チェックボックスにチェックを入れます。インポートしたい部門の「内部ID」と「部門を無効にする」をCSVファイルに書きます。

 :::note info
**推奨(エラーや文字化けを防ぐ為に)**
`ファイル形式`： .csv（カンマ区切り）
`文字コード`：UTF-8（BOMなし）
`ヘッダー行`：インポートデータの項目名（NetSuiteのフィールドに合わせる）
::: 
※サンプルCSVファイル：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015012/f31a2ebf-b647-4a03-9e06-04c912a5eb89.png)

※サンプルNetsuite画面：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015012/b0c84a02-6af2-49f0-8a0c-5fc608a300a5.png)

また、CSVファイルのヘッダー行はNetSuiteのフィールドと合わないと、エラーが発生する為、ヘッダー行作成のコツは以下となります。

:::note warn
CSVファイルのヘッダー行を準備するコツ
1.一件だけ手動で登録
　NetSuite上で対象レコード（例：顧客、仕訳、請求書など）を、一件だけ手動で登録します。
2.手動で登録されたデータをCSV形式で出力
　NetSuiteの「CSVエクスポート」機能を使って、上記で作成したレコードをCSV形式で出力します。
3.出力されたCSVファイルをベースに、同じ形式でCSVファイルを作成
　出力されたCSVファイルを見ながら、同じ形式・列構成で他のデータを追加していけば、エラーになりにくくなります。
:::

**② NetSuiteメニューからインポート開始**
　「CSVレコードのインポート」タブをダブルクリックします。
　**インポートパス：設定 ー＞ インポート/エクスポート ー＞ CSVレコードのインポート**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015012/5c5e825a-77b5-43f2-94c3-6428ed802270.png)

**③インポート・アシスタントの設定**
　以下のa~e箇所を設定します。
　`a.インポートタイプ`
　`b.レコードタイプ`
　`c.文字コード`

 :::note warn
 　※今回用意したcsvファイルの文字コードは「UTF-8（BOMなし）」なので、「Unicode（UTF-8）」として選択します。
::: 
　`d.CSVの列デリミタ`

 :::note warn
 　※今回用意したcsvファイルのファイル形式は「.csv（カンマ区切り）」なので、「カンマ」として選択します。
:::
　`e.CSVファイル`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015012/bb51b96c-8630-458d-91e4-6c506866533f.png)

**④ インポートオプションの選択**
　業務の内容によって「追加」、「更新」、「追加または更新」を選択します。
　※ 通常は「追加」または「追加または更新」を使います
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015012/c4d62c2d-42d2-4708-a00a-e9da9efa19cf.png)

**⑤ フィールドマッピング**
　左側が①に用意したcsvデータのフィールド名で右側がNetSuiteの既存データのフィールド名です。NetSuiteが自動でマッピングしてくれるけど、念のため、手動でチェックが安心です。
　※特に**カスタムフィールド（custbody_〜, custrecord_〜など）**は要注意です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015012/5b842aff-7e44-42f8-b67b-aea5f5821821.png)

**⑥ インポート設定の確認・保存**
　「保存 & 実行」もしくは「保存」をクリックすると、CSVインポートを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015012/fd544d41-8d94-4658-9866-3baf109bd0a1.png)

 :::note info
「保存 & 実行」と「保存」の区別
・「保存 & 実行」：テンプレートとしての保存＋CSVインポートの実行
　※次回も使う可能性があれば、「保存 & 実行」ボタンをお勧めです。「設定ー＞インポート/エクスポートー＞保存したCSVインポート」から探せます。
・「保存」：CSVインポートの実行
:::

**⑦ インポート結果の確認**
　「ジョブ・ステータスをインポートします」をクリックすると、インポート結果を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015012/2aea1e2e-c7b7-4b57-b646-f525c115b60f.png)

他の確認方法：パス「設定ー＞インポート/エクスポートー＞CSVインポート・ステータスを表示」でインポート結果一覧を確認できます。
 
**⑧インポートステータス画面で成功件数・失敗件数の確認**
　※エラーがあれば「CSV応答」クリックするとエラー詳細をダウンロードしてエラー原因を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015012/a0f4737d-54f5-4bb5-86bd-6814f29da005.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4015012/dd07b0a3-165f-4582-bda0-0cd7225176a1.png)


## よくあるCSVインポートエラーと対処法
実際、業務内容によって、CSVインポートする時、エラー発生することがよくあります。まとめたよくあるパータンを共有いたします。少しでも、同じように悩んでいる方のヒントになれば嬉しいです。
1.「Invalid entity reference」顧客・取引先・従業員などが存在しません

 :::note info
**対処法**：
顧客名、取引先名がNetSuite上に「完全一致」しているか確認してください。（スペース・全角半角注意）
必要なら内部IDを使って指定してみてください。
:::

2.「Invalid item reference」アイテムが見つかりません

  :::note info
**対処法**：
アイテムがNetSuiteに登録されているか確認してください。
似た名前が複数ある場合は、表示名や内部IDの指定を変えてみてください。
:::

3.「You do not have permission to perform this operation」権限エラー
 
  :::note info
**対処法**：
使用しているロールに「CSVインポート」や対象トランザクションの作成権限があるか確認してみてください。
または管理者ユーザーで試してみてください。
:::

4.「Invalid date format」または「Invalid number」日付や数値のフォーマットが合ってません

   :::note info
**対処法**：
数値にカンマや全角文字が入っていないか、日付の表示形式(MM/DD/YYYY や YYYY/MM/DDなど)が合っていますか確認してみてください。
:::

5.「Required field missing」必須項目が抜けている

   :::note info
**対処法**：
フィールドマッピング時に必須マークがある項目に値が入っているか確認してみてください。
::: 
   
6.「Duplicate external ID」外部IDが重複している（同じレコードを2回インポートしようとしてる）

   :::note info
**対処法**：
同じ外部IDを使っていないかチェックして、更新なら更新モード、新規作成なら追加モードで分けて実行してみてください。
::: 

## 最後に
CSVインポートの大まかな流れやイメージ、少しでも伝わっていたら嬉しいです！
今後は「ここが詰まった」「こうやったら楽だった」といった実践的なTipsも投稿していく予定なので、よければぜひチェックしてみてください 😊