【중급자용】HubspotAPI를 GAS로 두드릴 수 있을 때까지

여러분 Hubspot 사용하고 계십니까~? ?
이제 이번에는 Hubspot 데이터를 Google 스프레드시트에 내보내는 단계를 설명합니다.

Hubspot이란?



간단히 설명하면 Hubspot은 '고객 관리 시스템'을 중심으로 '마케팅' '판매' 활동을 효율화하는 소프트웨어입니다. (그렇지?)

Hubspot API 정보



개발자 문서



HubSpot API Docs
API를 처음 만지는 방향으로 해설하면,
API는 "앱과 앱을 연결하는 메커니즘"입니다.

이번의 목적은 「Hubspot ⇔ Google 스프레드시트」의 제휴를 하기 위해서 사용해 갑니다.

Hubspot API가 할 수있는 일


  • GET (데이터 검색)
  • POST(데이터 추가)
  • PUT (데이터 업데이트)
  • DELETE(데이터 삭제)

  • 가능합니다.

    Hubspot API를 사용해 봅시다.



    연락처를 예제로 이동해 봅니다.

  • CRM API | 연락처 방문
  • 엔드포인트 선택


  • 테스트 호출을 클릭
  • API 키 취득 ( 계정 설정 로부터 확인 가능)


  • "요청 보내기"

  • 그러면 화면 오른쪽 중앙의 「응답」곳에 콘택트 정보가 나왔는지 생각합니다.
    초기설정이라면 리스트로 10건분의 콘택트군요.

    이와 같이 API 키가 있으면, 정보를 Hubspot 외부로부터 취득할 수 있는 것을 알았습니다.

    Google 스프레드시트와 협력



    그런 다음 GAS를 사용하여 스프레드 시트에 정보를 표시하고 싶습니다.
  • 새 시트 만들기
  • 도구> 스크립트 편집기에서 GAS 편집기를 엽니 다.

    contact.gs
    function myFunction() {
    
    }
    

    위와 같이 표시되고 있다고 생각하므로, 그 안에 코드를 써 갑니다.

    contact.gs
    function contacts() {
        //対象スプレッドシートのID
        const spreadsheet = SpreadsheetApp.openById('*********************************');
        const sheetHubspot = spreadsheet.getSheetByName('Hubspot'); //任意のタブ名をつける
    
        //HubspotのAPI接続設定
        const API_KEY = "**************************"; //先程取得したAPIキー
    
        //取得する列と行
        const lastColumn = 2; //コンタクトのプロパティの数
        const lastRow = 10; //コンタクトの個数
    
        let contactList = []; //コンタクトリストの配列
    
        //Hubspotからコンタクトを取得
        let url = "https://api.hubapi.com/crm/v3/objects/contacts/search" + "?hapikey=" + API_KEY;
        let headers = {"content-type" : "application/json"}
        let payload = {
            "properties": ["firstname,lastname"], //取得するプロパティ
            "limit": lastRow,
        }
        payload = JSON.stringify(payload);
        let options = {
            "method": 'POST',
            "headers": headers,
            "payload": payload,
            "muteHttpExceptions": true
        };
        let response = UrlFetchApp.fetch(url, options);
    
        //スプレッドシートにマッピング
        if(response){
            //JSON→配列化
            let responseArr = JSON.parse(response.getContentText());
    
            //連想配列からkeyが"results"の中身を取得
            let arrContacts = responseArr.results;
    
            //連想配列からkeyが"properties"の中身を配列形式で取得
            let arrProperties = arrContacts.map(obj => obj.properties);
    
            //コンタクトリストの配列
            for (const elem of arrProperties) {
                //コンタクトの配列
                let contactItem = [];
    
                //コンタクトの姓
                contactItem.push(elem["lastname"]);
    
                //コンタクトの名
                contactItem.push(elem["firstname"]);
    
                //配列に格納
                contactList.push(contactItem);
            }
    
            //シートへの記入
            sheetHubspot.getRange(2, 1, contactList.length, lastColumn).setValues(contactList);
          }
    }
    

    이제 10건 표시될 것입니다!

    코드 해설



    사전 준비


    //対象スプレッドシートのID
    const spreadsheet = SpreadsheetApp.openById('*********************************');
    const sheetHubspot = spreadsheet.getSheetByName('Hubspot'); //任意のタブ名をつける
    
    //HubspotのAPI接続設定
    const API_KEY = "**************************"; //先程取得したAPIキー
    

    스프레드시트의 탭 이름은 좋아하는 이름을 붙여 OK입니다.
    시트 ID는 https://docs.google.com/spreadsheets/d/**********************************************/의 *** 부분입니다.

    연락처 검색


    //取得する列と行
    const lastColumn = 2; //コンタクトのプロパティの数
    const lastRow = 10; //コンタクトの個数
    
    let contactList = []; //コンタクトリストの配列
    
    //Hubspotからコンタクトを取得
    let url = "https://api.hubapi.com/crm/v3/objects/contacts/search" + "?hapikey=" + API_KEY;
    let headers = {"content-type" : "application/json"}
    let payload = {
            "properties": ["firstname,lastname"], //取得するプロパティ
            "limit": lastRow,
    }
    payload = JSON.stringify(payload);
    let options = {
        "method": 'POST',
        "headers": headers,
        "payload": payload,
        "muteHttpExceptions": true
    };
    let response = UrlFetchApp.fetch(url, options);
    
  • 검색할 열과 행 수를 지정합니다.
  • Hubspot에서 연락처를 가져옵니다.

  • API 유형 선택


    let url = "https://api.hubapi.com/crm/v3/objects/contacts/search" + "?hapikey=" + API_KEY;API의 종류를 선택.

    Hubspot 문서
  • POST /crm/v3/objects/contacts
  • GET /crm/v3/objects/contacts/{contactId}

  • 등이라고 써 있는 곳을 참고로 하고, 실행하고 싶은 동작을 선택합니다.

    이 때의 「POST」 「GET」라고 써 있는 곳과,
    "method": 'POST', 를 맞춥니다.

    속성 선택


    "properties": ["firstname,lastname"],
    Hubspot 속성의 내부 값을 설명하여 얻을 수 있습니다.

    스프레드시트에 매핑


    //スプレッドシートにマッピング
    if(response){
        //JSON→配列化
        let responseArr = JSON.parse(response.getContentText());
    
        //連想配列からkeyが"results"の中身を取得
        let arrContacts = responseArr.results;
    
        //連想配列からkeyが"properties"の中身を配列形式で取得
        let arrProperties = arrContacts.map(obj => obj.properties);
    
        //コンタクトリストの配列
        for (const elem of arrProperties) {
            //コンタクトの配列
            let contactItem = [];
    
            //責任者の姓
            contactItem.push(elem["lastname"]);
    
            //責任者の名
            contactItem.push(elem["firstname"]);
    
            //配列に格納
            contactList.push(contactItem);
        }
    
        //シートへの記入
        sheetHubspot.getRange(2, 1, contactList.length, lastColumn).setValues(contactList);
      }
    

    취득한 데이터는 JSON 형식이므로,
    배열합니다.

    또 배열 형식이 연상 배열이며,
    내용의 구성이 다음과 같기 때문에,
    { result: {
     properties: {
      lastname: '山田',
      firstname: '太郎'  
     }
    };
    

    properties 의 내용을 통상 배열의 형태로 취득합니다.
    ['山田','太郎']
    

    마지막으로 시트에 기입해 완성입니다!

    좋은 웹페이지 즐겨찾기