はじめに

前回の記事では、Zendesk管理センターから祝日を登録する方法を紹介しました。

Zendesk管理センターからの登録は、シンプルでわかりやすいというメリットがあります。

しかし、1つずつしか登録できないというデメリットもあります。

日本の祝日は、年間で「16日」もあり、すべての祝日をZendesk管理センターから登録するのは少々手間です。

ですが、Zendesk APIを使うことで一括で登録することが可能です。

そこで、今回はZendesk APIを実行する簡単なシェルスクリプトを作成し、実際に祝日をまとめて登録してみます。

事前準備

シェルスクリプトを実行するために必要な準備を先に済ませます。

APIトークンの発行

1. Zendesk管理センターを開く

2.検索窓に「APIトークン」と入力し、 表示された「APIトークン」を押下

3.「APIトークンを追加」を押下し、説明を入力し、「保存」を押下

 

 

4.画面は変わらず「トークン」欄にトークンが表示されるので「コピー」を押下

※トークンを表示できるのは一度きりなのでコピーを忘れずに!

スケジュールIDの確認

発行したAPIトークンを使って、スケジュールIDを確認します。

以下のcurlコマンドを実行することで取得可能です。

※変数部分は環境に合わせて書き換えてください。

curl -s -u "${EMAIL}/token:${TOKEN}" \
  "https://${SUBDOMAIN}.zendesk.com/api/v2/business_hours/schedules.json" \
| jq -c '.schedules[] | {id: .id, name: .name}'

実行すると以下のような結果が得られます。

{"id":123456789,"name":"スケジュール名"}

祝日を登録したいスケジュール名のidをコピーし、メモします。

祝日データの用意(JSON形式)

登録に利用する祝日データをJSON形式で用意します。

今回は検証目的なので、以下のように数日分だけ用意しました。

{"holiday": {"name": "成人の日", "start_date": "2026-01-12", "end_date": "2026-01-12"}}
{"holiday": {"name": "建国記念の日", "start_date": "2026-02-11", "end_date": "2026-02-11"}}
{"holiday": {"name": "天皇誕生日", "start_date": "2026-02-23", "end_date": "2026-02-23"}}
{"holiday": {"name": "春分の日", "start_date": "2026-03-20", "end_date": "2026-03-20"}}

シェルスクリプトを作成

今回作成したシェルスクリプトは、curlコマンドをループするだけのシンプルなものです。

※お試しになる場合、パラメータを環境にあわせて書き換えてください。

#!/bin/bash

# パラメータ
SUBDOMAIN="your_subdomain"
SCHEDULE_ID="your_api_schedule"
EMAIL="your_email@example.com"
TOKEN="your_api_token"

# curlを実行する
cat holidays.json | while read line
do
curl https://${SUBDOMAIN}.zendesk.com/api/v2/business_hours/schedules/${SCHEDULE_ID}/holidays.json -d "$line" -H "Content-Type: application/json" -X POST -u "${EMAIL}/token:${TOKEN}"
done

echo "登録が完了しました。"

シェルスクリプトを実行

ターミナルを起動し、先ほどご紹介したシェルスクリプトを実行してみます。

$ sh holidays_add.sh
{"holiday":{"id":53632642861209,"name":"成人の日","start_date":"2026-01-12","end_date":"2026-01-12"},"url":"https://${SUBDOMAIN}.zendesk.com/api/v2/business_hours/schedules/${SCHEDULE_ID}/holidays/53632642861209"}{"holiday":{"id":53632635328665,"name":"建国記念の日","start_date":"2026-02-11","end_date":"2026-02-11"},"url":"https://${SUBDOMAIN}.zendesk.com/api/v2/business_hours/schedules/${SCHEDULE_ID}/holidays/53632635328665"}{"holiday":{"id":53632635370137,"name":"天皇誕生日","start_date":"2026-02-23","end_date":"2026-02-23"},"url":"https://${SUBDOMAIN}.zendesk.com/api/v2/business_hours/schedules/${SCHEDULE_ID}/holidays/53632635370137"}{"holiday":{"id":53632635400729,"name":"春分の日","start_date":"2026-03-20","end_date":"2026-03-20"},"url":"https://${SUBDOMAIN}.zendesk.com/api/v2/business_hours/schedules/${SCHEDULE_ID}/holidays/53632635400729"}登録が完了しました。
$

問題なく実行できました。

スケジュールを確認

シェルスクリプトの実行が完了したので、スケジュールに祝日が登録されていることを確認します。

まとめ

事前準備が必要なものの、Zendesk管理センターから1つずつ登録するよりも圧倒的に楽に感じました。

今回は、curlコマンドをループするだけのシェルスクリプトによる登録を紹介しましたが、

公式リファレンスでは、PythonやJavaなどのプログラミング言語での使用例も載っています。

使い慣れたプログラミング言語で、祝日登録プログラムを作成してみてはいかがでしょうか。