AlteryxでZendeskのスケジュールに登録されている休日を確認して新しく休日を登録する

2022.01.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、スズです。

以前、Alteryxを使って祝日をZendeskのスケジュールの休日に登録しました。

以前はZendeskのスケジュールに休日が登録されていない状態でしたので新規登録のみでしたが、現在はすでにスケジュールの休日に祝日が登録されている状態になっています。そこで今回は、スケジュールの休日に登録されている祝日を確認し、まだ登録されていない祝日を新しく登録してみます。

環境と事前準備

本記事の執筆に使用した環境は以下の通りです。

  • Alteryx Designer 2021.3
  • Windows 10 Pro

事前準備として、Zendeskの認証情報の作成や、ZendeskのスケジュールのIDの確認が必要となります。以前執筆した以下の記事に記載しています。

祝日の一覧は以下のサイトからCSVファイルで取得しました。

ワークフローの全体図

ワークフローの全体図はこちら。

「登録済みの休日のデータ作成」と「休日のデータの整形」に分けてワークフローを紹介します。

登録済みの休日のデータ作成

ワークフローの以下の部分では、Zendeskのスケジュールにすでに登録されている休日を取得します。

登録済みの休日の取得

テキスト入力ツールに、https://<サブドメイン>.zendesk.com/api/v2/business_hours/schedules/<スケジュールのID>/holidays.jsonというURLを用意し、ダウンロードツールを使ってテキスト入力ツールのURLから休日の一覧を取得します。ダウンロードツールには、ヘッダーに以下の定数値を追加し、ペイロードのHTTPアクションにはGETを設定します。

名前
Authorization Basic <Base64でエンコードされた認証情報>

ダウンロードしたデータはJSONパースツールを使って展開します。

休日のデータの整形

JSONパースツールを使って展開したデータは、祝日の一覧と照合して追加登録する休日を抽出するために使います。そのため、データを照合しやすいように整えていきます。

JSON_NAMEの列にはholidays.0.nameというような値が入っています。この値を正規表現ツールを使ってグループIDと新しい列名を作成していきます。holidays.0.idの場合、0をグループID、nameは新しい列名として使用します。

クロスタブツールを使って、グループIDごとにグループ化、新しい列名を列名としてJSON_ValueStringを値として出力します。

祝日の一覧と照合していく際に分かりやすいように、祝日の名前と日付のみ残し、不要な列をセレクトツールで削除しておきます。

休日の追加登録

ワークフローの以下の部分では、祝日の一覧とZendeskから取得した休日のデータを照らし合わせて追加登録する休日を抽出し、Zendeskのスケジュールに登録します。

データ入力ツールで読み込んだ祝日の一覧と前項で作成した休日のデータを、結合ツールで日付と祝日の名前をキーとして結合します。結合ツールの出力は、Zendeskにだけある休日、Zendeskと祝日の一覧の両方にある祝日、祝日の一覧のみに載っている祝日の3つに分かれます。祝日の一覧のみに載っている祝日を、新しくZendeskのスケジュールの休日に登録します。

なお、祝日には「元旦」が含まれていますが、これは年末年始の休業期間と重なるため、このワークフローではフィルターツールを使って除いています。以下のデータが、新しく登録する祝日の一覧です。

フォーミュラツールを使って、Zendeskに登録するためのJSON形式のデータを以下のように作成します。

'{"holiday": {"name": "' + <祝日の名前の列> + '","start_date": "' + <祝日の日付の列> + '","end_date": "' + <祝日の日付の列> + '"}}'

テキスト入力ツールでhttps://<サブドメイン>.zendesk.com/api/v2/business_hours/schedules/<スケジュールのID>/holidays.jsonのようにZendeskの投稿先のURLを用意し、フィールド付加ツールを使って各レコードに結合します。

あとはダウンロードツールを使って、データをZendeskにアップロードします。ダウンロードツールのヘッダーには以下の値を追加します。

名前
Authorization Basic <Base64でエンコードされた認証情報>
Content-Type application/json

また、ダウンロードツールのペイロードのHTTPアクションにはPOSTを指定し、「フィールドからクエリ文字列/本文を取得する」にはフォーミュラツールで作成したJSON形式のデータを指定します。

ワークフローを実行し、結果に「HTTP/1.1 201 Created」と表示されると成功です。

さいごに

Alteryxを使って、Zendeskのスケジュールの休日に登録されている祝日を確認し、まだ登録されていない祝日を新しく登録してみました。なお、補足となりますが、今回の方法では祝日が変更されたケースには対応できません。祝日が変更されるようなケースがあった場合には、手動で修正が必要となりますのでご注意ください。

参考サイト