RevOps & オペレーション

natsumimori
コミュニティーマネージャー
コミュニティーマネージャー

📹カスタムコード活用方法<都道府県名を書式統一するコード例>

Operations Hub には、目玉機能の一つに”データクレンジング”があります。Operations Hub Professional以上のアカウントでワークフローに「データを書式設定」というアクションが追加されており、この機能を使って郵便番号の値に全てハイフンを入れたり、名前の先頭を大文字にしたり、という書式統一を自動化することができます。(ナレッジベース:ワークフローでカスタムコードアクションを使用する

 

<例>

  • 郵便番号1112222 ⇨ 111-2222
  • 姓名 natsumi mori ⇨ Natsumi Mori

データを書式設定.gif

 

現在、「データを書式設定」アクションには”名前の先頭を大文字にする”、”全ての文字を小文字にする”などの書式統一オプションがあるのですが、「カスタムコード」を使うと自分で書いたJavaScriptコードをワークフローで実行することができるので、書式統一をさらにカスタマイズして利用することが可能です。

 

名前のないワークフロー_-_Wed_May_19_2021_15_26_07_GMT_0800___HubSpot.png

 

カスタムコード活用方法の一例として、都道府県名を書式統一するコードを紹介します。このコードを挿入してワークフローを有効にすると、ワークフローに登録されたコンタクトの都道府県プロパティーの値が漢字に書式統一されます。

 

コンタクト_and_コンタクト.png

 

都道府県を書式統一する___HubSpot.png

 

このように自作のコードをワークフローに組み込むことで、さまざまなデータ処理作業を自動化することが可能です。

 

便利なコードを作成された方や発見した方は、ぜひコミュニティーで共有してください😄 また、「こんなコードがあったら便利!」というアイデアも募集しています、返信↓で教えてください🙌

役立つカスタムコードをどんどん蓄積していきましょう!😎

 

<都道府県名を書式統一するカスタムコードをワークフローに実装する>

*カスタムコードのシークレットにHubSpot APIキー(通称HAPIKEY)を入力する必要があります。(Developers document参照)

 

 

<都道府県名を漢字に書式統一するコード>

*あくまでサンプルコードですので、動作に関してHubSpotは責任を負いません。あらかじめご了承ください。

GitHubリンク

 

 

 

const hubspot = require('@hubspot/api-client');

/// HubSpotのWorkflow内のIDEの不具合で`async`を使うとエラー扱いになりますが
/// そのままエラーを無視して保存すると問題なく動きます
exports.main = async (event, callback) => {

    const prefectureList = [
        {
            id: "01",
            name: "北海道",
            short: "北海道",
            kana: "ホッカイドウ",
            en: "hokkaidoken",
            enShort: "hokkaido",
        },
        {
            id: "02",
            name: "青森県",
            short: "青森",
            kana: "アオモリケン",
            en: "aomoriken",
            enShort: "aomori",
        },
        {
            id: "03",
            name: "岩手県",
            short: "岩手",
            kana: "イワテケン",
            en: "iwateken",
            enShort: "iwate",
        },
        {
            id: "04",
            name: "宮城県",
            short: "宮城",
            kana: "ミヤギケン",
            en: "miyagiken",
            enShort: "miyagi",
        },
        {
            id: "05",
            name: "秋田県",
            short: "秋田",
            kana: "アキタケン",
            en: "akitaken",
            enShort: "akita",
        },
        {
            id: "06",
            name: "山形県",
            short: "山形",
            kana: "ヤマガタケン",
            en: "yamagataken",
            enShort: "yamagata",
        },
        {
            id: "07",
            name: "福島県",
            short: "福島",
            kana: "フクシマケン",
            en: "fukushimaken",
            enShort: "fukushima",
        },
        {
            id: "08",
            name: "茨城県",
            short: "茨城",
            kana: "イバラキケン",
            en: "ibarakiken",
            enShort: "ibaraki",
        },
        {
            id: "09",
            name: "栃木県",
            short: "栃木",
            kana: "トチギケン",
            en: "tochigiken",
            enShort: "tochigi",
        },
        {
            id: "10",
            name: "群馬県",
            short: "群馬",
            kana: "グンマケン",
            en: "gunmaken",
            enShort: "gunma",
        },
        {
            id: "11",
            name: "埼玉県",
            short: "埼玉",
            kana: "サイタマケン",
            en: "saitamaken",
            enShort: "saitama",
        },
        {
            id: "12",
            name: "千葉県",
            short: "千葉",
            kana: "チバケン",
            en: "chibaken",
            enShort: "chiba",
        },
        {
            id: "13",
            name: "東京都",
            short: "東京",
            kana: "トウキョウト",
            en: "tokyoken",
            enShort: "tokyo",
        },
        {
            id: "14",
            name: "神奈川県",
            short: "神奈川",
            kana: "カナガワケン",
            en: "kanagawaken",
            enShort: "kanagawa",
        },
        {
            id: "15",
            name: "新潟県",
            short: "新潟",
            kana: "ニイガタケン",
            en: "niigataken",
            enShort: "niigata",
        },
        {
            id: "16",
            name: "富山県",
            short: "富山",
            kana: "トヤマケン",
            en: "toyamaken",
            enShort: "toyama",
        },
        {
            id: "17",
            name: "石川県",
            short: "石川",
            kana: "イシカワケン",
            en: "ishikawaken",
            enShort: "ishikawa",
        },
        {
            id: "18",
            name: "福井県",
            short: "福井",
            kana: "フクイケン",
            en: "fukuiken",
            enShort: "fukui",
        },
        {
            id: "19",
            name: "山梨県",
            short: "山梨",
            kana: "ヤマナシケン",
            en: "yamanashiken",
            enShort: "yamanashi",
        },
        {
            id: "20",
            name: "長野県",
            short: "長野",
            kana: "ナガノケン",
            en: "naganoken",
            enShort: "nagano",
        },
        {
            id: "21",
            name: "岐阜県",
            short: "岐阜",
            kana: "ギフケン",
            en: "gifuken",
            enShort: "gifu",
        },
        {
            id: "22",
            name: "静岡県",
            short: "静岡",
            kana: "シズオカケン",
            en: "shizuokaken",
            enShort: "shizuoka",
        },
        {
            id: "23",
            name: "愛知県",
            short: "愛知",
            kana: "アイチケン",
            en: "aichiken",
            enShort: "aichi",
        },
        {
            id: "24",
            name: "三重県",
            short: "三重",
            kana: "ミエケン",
            en: "mieken",
            enShort: "mie",
        },
        {
            id: "25",
            name: "滋賀県",
            short: "滋賀",
            kana: "シガケン",
            en: "shigaken",
            enShort: "shiga",
        },
        {
            id: "26",
            name: "京都府",
            short: "京都",
            kana: "キョウトフ",
            en: "kyotoken",
            enShort: "kyoto",
        },
        {
            id: "27",
            name: "大阪府",
            short: "大阪",
            kana: "オオサカフ",
            en: "osakaken",
            enShort: "osaka",
        },
        {
            id: "28",
            name: "兵庫県",
            short: "兵庫",
            kana: "ヒョウゴケン",
            en: "hyogoken",
            enShort: "hyogo",
        },
        {
            id: "29",
            name: "奈良県",
            short: "奈良",
            kana: "ナラケン",
            en: "naraken",
            enShort: "nara",
        },
        {
            id: "30",
            name: "和歌山県",
            short: "和歌山",
            kana: "ワカヤマケン",
            en: "wakayamaken",
            enShort: "wakayama",
        },
        {
            id: "31",
            name: "鳥取県",
            short: "鳥取",
            kana: "トットリケン",
            en: "tottoriken",
            enShort: "tottori",
        },
        {
            id: "32",
            name: "島根県",
            short: "島根",
            kana: "シマネケン",
            en: "shimaneken",
            enShort: "shimane",
        },
        {
            id: "33",
            name: "岡山県",
            short: "岡山",
            kana: "オカヤマケン",
            en: "okayamaken",
            enShort: "okayama",
        },
        {
            id: "34",
            name: "広島県",
            short: "広島",
            kana: "ヒロシマケン",
            en: "hiroshimaken",
            enShort: "hiroshima",
        },
        {
            id: "35",
            name: "山口県",
            short: "山口",
            kana: "ヤマグチケン",
            en: "yamaguchiken",
            enShort: "yamaguchi",
        },
        {
            id: "36",
            name: "徳島県",
            short: "徳島",
            kana: "トクシマケン",
            en: "tokushimaken",
            enShort: "tokushima",
        },
        {
            id: "37",
            name: "香川県",
            short: "香川",
            kana: "カガワケン",
            en: "kagawaken",
            enShort: "kagawa",
        },
        {
            id: "38",
            name: "愛媛県",
            short: "愛媛",
            kana: "エヒメケン",
            en: "ehimeken",
            enShort: "ehime",
        },
        {
            id: "39",
            name: "高知県",
            short: "高知",
            kana: "コウチケン",
            en: "kochiken",
            enShort: "kochi",
        },
        {
            id: "40",
            name: "福岡県",
            short: "福岡",
            kana: "フクオカケン",
            en: "fukuokaken",
            enShort: "fukuoka",
        },
        {
            id: "41",
            name: "佐賀県",
            short: "佐賀",
            kana: "サガケン",
            en: "sagaken",
            enShort: "saga",
        },
        {
            id: "42",
            name: "長崎県",
            short: "長崎",
            kana: "ナガサキケン",
            en: "nagasakiken",
            enShort: "nagasaki",
        },
        {
            id: "43",
            name: "熊本県",
            short: "熊本",
            kana: "クマモトケン",
            en: "kumamotoken",
            enShort: "kumamoto",
        },
        {
            id: "44",
            name: "大分県",
            short: "大分",
            kana: "オオイタケン",
            en: "oitaken",
            enShort: "oita",
        },
        {
            id: "45",
            name: "宮崎県",
            short: "宮崎",
            kana: "ミヤザキケン",
            en: "miyazakiken",
            enShort: "miyazaki",
        },
        {
            id: "46",
            name: "鹿児島県",
            short: "鹿児島",
            kana: "カゴシマケン",
            en: "kagoshimaken",
            enShort: "kagoshima",
        },
        {
            id: "47",
            name: "沖縄県",
            short: "沖縄",
            kana: "オキナワケン",
            en: "okinawaken",
            enShort: "okinawa",
        }
    ]


    const hubspotClient = new hubspot.Client({
        apiKey: process.env.HAPIKEY
    });
    const results = await hubspotClient.crm.contacts.basicApi.getById(event.object.objectId, ['state'])

    /// コンタクトの今の都道府県
    const currentState = results.body.properties.state
    const lowercaseCurrentState = currentState.toLowerCase().replace(/[ぁ-ん]/g, s => String.fromCharCode(s.charCodeAt(0) + 0x60));

    /// このアクションのアウトプットが入る変数
    let state

    loop1:
    for (const prefectureMap of prefectureList) { /// 上の都道府県リスト一個一個をループし、該当する値がないかチェックする
        for (const prefectureString of Object.values(prefectureMap)) {
            if (prefectureString.includes(lowercaseCurrentState)) {
                /**
                 * 該当する値があった場合はアウトプットする値としてname(日本語表記)をインプットする
                 * 日本語以外の表記に変換したい場合は'.name'を'.en'や'.enShort'に変えれば英語表記だったりにできる
                */
                state = prefectureMap.name
                break loop1
            }
        }
    }

    /// もし該当する値がなかった場合は今の都道府県をそのまま返す
    if(!state) {
        state = currentState
    }

    callback({
        outputFields: {
            state,
        }
    });
}

 

 

 

 

 

 

 

 

 

 


Join us on March 27th at 12 PM for the Digital Essentials Lab, an interactive session designed to redefine your digital strategy!
Engage with expert Jourdan Guyton to gain actionable insights, participate in live Q&A, and learn strategies to boost your business success.
Don't miss this opportunity to connect and grow—reserve your spot today!

2件の返信
Yuta
トップ投稿者 | Gold Partner
トップ投稿者 | Gold Partner

📹カスタムコード活用方法<都道府県名を書式統一するコード例>

お~、正規表現まで書いてくれてるのはありがたいです!

なるほど、データクレンジングを内部でできる感じになるのですね!

これは導入時期にスプシからの移行などがかなり楽になりますね!

 

最初の移行時期はオペレーションハブを使って、手動でオペレーション作成、半年後にマーケ、セールスの自動化の流れが捗りそうですね!

開発が得意なHubSpotゴールドパートナー
株式会社NADJA
濱口雄太
https://www.nadja.biz

口コミはこちらから↓
https://ecosystem.hubspot.com/ja/marketplace/solutions/nadja-biz

著書「業務効率化をするためにまっさきに読みたいiPaaS入門書: すぐに始められる事例を多数掲載!」はこちら↓
https://www.amazon.co.jp/dp/B09QZHRYLC

natsumimori
コミュニティーマネージャー
コミュニティーマネージャー

📹カスタムコード活用方法<都道府県名を書式統一するコード例>

カスタムコードを使用してのデータクレンジングは、英語だけでなく日本語でもかなり役立ちそうですよね!

また新たにコードの例を発見したら紹介します😄


Join us on March 27th at 12 PM for the Digital Essentials Lab, an interactive session designed to redefine your digital strategy!
Engage with expert Jourdan Guyton to gain actionable insights, participate in live Q&A, and learn strategies to boost your business success.
Don't miss this opportunity to connect and grow—reserve your spot today!

0 いいね!