はじめに
WorkatoでAPI連携を行う際、レスポンスヘッダーに含まれるSet-Cookieを扱いたい場面が
あります。
一見シンプルに思える処理ですが、実際にやってみると意外と手間がかかることもあります。
今回は、
Workatoの標準HTTPアクション → Connector SDK → Pythonアクション
という3段階の試行を経て、最終的にPythonでスマートに解決した事例を紹介します。
背景:なぜPythonにたどり着いたのか?
① 標準HTTPアクションではCookieが正しく取れなかった
最初はWorkatoの標準HTTPアクションを使って実装を試みました。
ところが、レスポンスヘッダー内のSet-Cookieがリスト形式で返されるAPIだったため、
うまくCookieを取得できませんでした。
HTTPアクションではヘッダーを文字列として扱う前提が多く、
["sessionid=xxx", "path=/", ...] のような形式をきれいに処理するには工夫が必要です。
② Connector SDKでの実装には手間がかかる
次に、Connector SDK(Rubyベース) での実装を検討しました。
しかし、Connector SDKの作法を踏まえながら開発する必要があり、
柔軟性は高いものの、「ちょっとレスポンスヘッダーからCookieを取りたいだけ」 の用途には
少しオーバースペックでした。
③ Pythonなら数行で実装できた
最終的に、WorkatoのPythonアクションを使って実装したところ、
簡単に目的を達成できました。
Pythonの標準ライブラリやrequestsモジュールを使えば、
ヘッダー操作や文字列整形が直感的に書けます。
実装概要
Pythonアクションで行った処理はシンプルです。
-
requestsでAPIリクエストを送信 - レスポンスヘッダーから
Set-Cookieを取得 - 必要なCookie(例:セッションID)だけを抽出・整形して返却
実装例
import requests
response = requests.get(
"https://example.com/login",
headers={"User-Agent": "WorkatoBot"}
)
# レスポンスヘッダーからSet-Cookieを取得
cookies = response.headers.get("Set-Cookie")
# 必要なCookieを抽出(例:sessionid)
session_cookie = [c for c in cookies.split(";") if "sessionid=" in c][0]
return {"session_cookie": session_cookie}
Pythonならこの程度の処理が直感的に書けます。
複数のヘッダーが返ってきても、requestsが自動的に扱ってくれるため、
後処理の負担も少なくなります。
Workatoでの活用ポイント
• Connector SDKにこだわらず、必要な処理だけPythonで補う
• ヘッダー操作・Cookie整形などの細かい処理に最適
• 開発・デバッグの効率を大幅に改善できる
Workatoは「1つの言語で完結させる」よりも、
“得意な部分を適材適所で使う” ことが強みになります。
まとめ:シンプルにしたいならPythonも選択肢に
今回の事例から得られた学びは次の通りです。
• 標準HTTPアクションでは、ヘッダー形式によっては扱いづらいケースがある
• Connector SDKは強力だが、小規模処理にはやや重い
• Pythonアクションを補助的に使うと、開発効率が劇的に上がる
「ちょっとした処理なら、Pythonで完結させる」
という発想は、Workato開発をより柔軟にしてくれるはずです。