C#でHubSpotのコンタクトを追加してみた
2019-05-21
azblob://2022/11/11/eyecatch/2019-05-21-create-hubspot-contact-by-c-sharp-000-e1558433119156.jpg

先日、csvファイルにまとまっている連絡先をまとめて、HubSpotに追加するコンソールアプリ(.NET Core)を作成しました。

その時に躓いた点についていくつか紹介します。

csvファイルの文字コード

元々ExcelファイルだったものをcsvファイルにするときにCSV UTF-8(コンマ区切り)で保存します。

理由はコンソールに出力した時にShift-JISのままだと文字化けしてしまうからです。プログラム側から何とかする方法もありますが、躓きやすいので文字コードを変えて保存したほうが手っ取り早いのでおすすめです。

Excelの保存画面
Excelの保存画面

また、カンマが入っているセルはダブルクオーテーションで囲まれます。そのため、プログラム側で1行をセルに分割するときにカンマでSplitする場合は注意が必要です。

C#でHubSpot

HubSpotのC# .NET用ラッパー、HubSpot.NETを用います。

導入方法

  1. パッケージのインストール Visual Studioのツール>NuGet パッケージマネージャー>ソリューションのNuGetパッケージの管理の検索窓から以下のパッケージをインストールします。
  • SquaredUp.HubSpot.NET
  • Flurl
  • Newtonsoft.Json
  • RestSharp
  1. HubSpotのAPIキーの取得 公式のHubSpot APIキーへのアクセスを参考にAPIキーを取得します。

  2. 以下のコードでコンタクトを追加

  var api = new HubSpotApi("HubSpot API KEY"); 
  // コンタクトの作成 
  var contact = api.Contact.Create(new ContactHubSpotModel() 
  { 
      Email = "sample@test.com", 
      FirstName = "一郎", 
      LastName = "山田", 
      Phone = "12345678", 
      Company = "Yorozuya Yamada." 
  }); 

例外処理

HubSpotの例外はすべてHubSpotExceptionで返ってきます。 よく取得しやすいエラーとしては以下の2つが挙げられると思います。

  • すでにコンタクトが存在しているエラー
  • 値が不正のときのエラー

エラーメッセージで何のエラーか判断できるので(正しいエラーの分岐かどうかは怪しいですが)今回は以下のようにExceptionをStringにして、特定の文字列を含むかどうかでエラーの分岐を行いました。

try 
                { 
                    // コンタクトの作成 
                    var createContact = api.Contact.Create(new ContactHubSpotModel() 
                    { 
                        Email = contact.email, 
                        FirstName = contact.firstName, 
                        LastName = contact.lastName, 
                        Phone = contact.phone, 
                        Company = contact.company 
                    }); 

                    Console.Write(contact.lastName + " " + contact.firstName + "\n"); 
                } 
                catch (Exception e) 
                { 
                    string errorMessageString = e.ToString(); 
                    if (errorMessageString.Contains("is invalid"))  
                    { 
                        //値が不正だった時の処理 
                        Console.Write(contact.lastName + " " + contact.firstName + "\n"); 
                        Console.Write(errorMessageString + "\n"); 
                        Console.Write("\n"); 
                    } 
                    else if (errorMessageString.Contains("Contact already exists")) 
                    { 
                        //すでに登録されているコンタクトだった時の処理 
                        Console.Write("Contact already exists:" + contact.lastName + " " + contact.firstName + "\n"); 
                        Console.Write("\n"); 
                    } 
                } 

まとめ

HubSpot.NETを使って、コンソールアプリ(.NET Core)から、HubSpotのコンタクトを追加しました。 ここによると、コンタクトの追加以外にもコンタクトの削除や更新などもできるようです。