TheOddsAPIとAirtableを使用したベッティングデータ取得の自動化
中級
これはOther分野の自動化ワークフローで、10個のノードを含みます。主にMerge, Airtable, HttpRequest, ScheduleTriggerなどのノードを使用。 Odds APIを使ってスポーツベッティングデータを自動化
前提条件
- •Airtable API Key
- •ターゲットAPIの認証情報が必要な場合あり
カテゴリー
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "6sBxOuYYcJjIBmVJ",
"meta": {
"instanceId": "73d9d5380db181d01f4e26492c771d4cb5c4d6d109f18e2621cf49cac4c50763",
"templateCredsSetupCompleted": true
},
"name": "Automating Betting Data Retrieval with TheOddsAPI and Airtable",
"tags": [],
"nodes": [
{
"id": "3f7d9313-2a46-4869-a1f5-33976352961c",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
-520,
-300
],
"parameters": {
"width": 300,
"height": 440,
"content": "The following triggers start the workflow at the Start of the day and the End of the day. Times can be adjusted to user's preference. "
},
"typeVersion": 1
},
{
"id": "a535c540-c186-466f-97e2-4d96d02c1f1d",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-100,
-660
],
"parameters": {
"color": 4,
"width": 460,
"height": 660,
"content": "Once activated, HTTP Requests pulls the upcoming data for the sport of the user's choosing. The following is set for Ice Hockey. More documentation can be found within the link below: \n\nhttps://the-odds-api.com/liveapi/guides/v4/#get-events\n\nIf you would like to add more data such as the sport books or odds, you can find documentation within the documentation below: \n\nhttps://the-odds-api.com/liveapi/guides/v4/#get-odds\n\nOnce the data is pulled, the records are created within the Airtable.\n"
},
"typeVersion": 1
},
{
"id": "29335df8-6aab-475c-8d8b-38b27eb66bb9",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
440,
-280
],
"parameters": {
"color": 3,
"width": 800,
"height": 540,
"content": "At the end of the day, the Schedule Trigger will activate a HTTP request for the scores of the events. This is set for Ice Hockey but can be adjusted for the user's preference. \n\nAfter the data is pulled, it will merge the data with upcoming events to combine the results matching the id. \n\nThe Airtable is then updated with the result records. This can be adjusted to pull in sports odds or the different sports book data. "
},
"typeVersion": 1
},
{
"id": "01134aa4-cc3c-42ed-bc96-f737f1434ed6",
"name": "朝7時にデータを取得するトリガー",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-420,
-200
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 7
}
]
}
},
"typeVersion": 1.2
},
{
"id": "c0b4c27f-bb17-4d85-a042-aa2db5060a6f",
"name": "夜11時にデータを取得するトリガー",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-420,
-20
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 23
}
]
}
},
"typeVersion": 1.2
},
{
"id": "0a38de6c-4f2e-46ba-8c10-8f12b0a4abe2",
"name": "当日の今後のスポーツイベントデータを取得",
"type": "n8n-nodes-base.httpRequest",
"position": [
20,
-200
],
"parameters": {
"url": "=https://api.the-odds-api.com/v4/sports/icehockey_nhl/events?apiKey=60019f5ac82b8d5d508b2dc8393384c1",
"options": {},
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "qbYtAoCFY2cLFvOU",
"name": "Header Auth account"
}
},
"typeVersion": 4.2
},
{
"id": "28393bd9-17ed-48b1-ba6f-f62b51ce137c",
"name": "当日の今後のイベントレコードを作成",
"type": "n8n-nodes-base.airtable",
"position": [
180,
-380
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appIXd8a8JeB9bPaL",
"cachedResultUrl": "https://airtable.com/appIXd8a8JeB9bPaL",
"cachedResultName": "Untitled Base"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tbldpnP52opBEtKEy",
"cachedResultUrl": "https://airtable.com/appIXd8a8JeB9bPaL/tbldpnP52opBEtKEy",
"cachedResultName": "Table 1"
},
"columns": {
"value": {
"id": "={{ $json.id }}",
"away_team": "={{ $json.away_team }}",
"home_team": "={{ $json.home_team }}",
"sports_key": "={{ $json.sport_key }}",
"sport_title": "={{ $json.sport_title }}",
"commence_time": "={{ $json.commence_time }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "sports_key",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "sports_key",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "sport_title",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "sport_title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "commence_time",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "commence_time",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "home_team",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "home_team",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "away_team",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "away_team",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "completed",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "completed",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "scores",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "scores",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "last_update",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "last_update",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"id": "0ApVmNsLu7aFzQD6",
"name": "Airtable Personal Access Token account"
}
},
"typeVersion": 2.1
},
{
"id": "086e599b-fc74-4ed5-a36f-fb80e385e625",
"name": "一日の終わりにスポーツ結果データを取得",
"type": "n8n-nodes-base.httpRequest",
"position": [
500,
20
],
"parameters": {
"url": "https://api.the-odds-api.com/v4/sports/icehockey_nhl/scores?daysFrom=1&apiKey=60019f5ac82b8d5d508b2dc8393384c1",
"options": {},
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "qbYtAoCFY2cLFvOU",
"name": "Header Auth account"
}
},
"typeVersion": 4.2
},
{
"id": "1b5ec6f2-d913-4005-89f0-d566e896c344",
"name": "IDを照合してスポーツ結果と今後のイベントレコードを結合",
"type": "n8n-nodes-base.merge",
"position": [
740,
-120
],
"parameters": {
"mode": "combine",
"options": {},
"fieldsToMatchString": "id"
},
"typeVersion": 3
},
{
"id": "f1765871-6f9e-416b-8ee8-696bc4dbf6bb",
"name": "スポーツイベントのスコアと結果でテーブルレコードを更新",
"type": "n8n-nodes-base.airtable",
"position": [
1020,
-60
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appIXd8a8JeB9bPaL",
"cachedResultUrl": "https://airtable.com/appIXd8a8JeB9bPaL",
"cachedResultName": "Untitled Base"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tbldpnP52opBEtKEy",
"cachedResultUrl": "https://airtable.com/appIXd8a8JeB9bPaL/tbldpnP52opBEtKEy",
"cachedResultName": "Table 1"
},
"columns": {
"value": {
"id": "={{ $json.id }}",
"scores": "={{ $json.scores }}",
"completed": "={{ $json.completed }}",
"last_update": "={{ $json.last_update }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "sports_key",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "sports_key",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "sport_title",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "sport_title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "commence_time",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "commence_time",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "home_team",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "home_team",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "away_team",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "away_team",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "completed",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "completed",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "scores",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "scores",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "last_update",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "last_update",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update"
},
"credentials": {
"airtableTokenApi": {
"id": "0ApVmNsLu7aFzQD6",
"name": "Airtable Personal Access Token account"
}
},
"typeVersion": 2.1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "bf20603b-eb12-4156-94fe-fb18ecf6a454",
"connections": {
"01134aa4-cc3c-42ed-bc96-f737f1434ed6": {
"main": [
[
{
"node": "0a38de6c-4f2e-46ba-8c10-8f12b0a4abe2",
"type": "main",
"index": 0
}
]
]
},
"c0b4c27f-bb17-4d85-a042-aa2db5060a6f": {
"main": [
[
{
"node": "086e599b-fc74-4ed5-a36f-fb80e385e625",
"type": "main",
"index": 0
}
]
]
},
"086e599b-fc74-4ed5-a36f-fb80e385e625": {
"main": [
[
{
"node": "1b5ec6f2-d913-4005-89f0-d566e896c344",
"type": "main",
"index": 1
}
]
]
},
"0a38de6c-4f2e-46ba-8c10-8f12b0a4abe2": {
"main": [
[
{
"node": "1b5ec6f2-d913-4005-89f0-d566e896c344",
"type": "main",
"index": 0
},
{
"node": "28393bd9-17ed-48b1-ba6f-f62b51ce137c",
"type": "main",
"index": 0
}
]
]
},
"1b5ec6f2-d913-4005-89f0-d566e896c344": {
"main": [
[
{
"node": "f1765871-6f9e-416b-8ee8-696bc4dbf6bb",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
中級 - その他
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
Google連絡先をNotionと双方向同期
Google連絡先をNotionと双方向同期
If
Set
Merge
+
If
Set
Merge
82 ノードSolomon
その他
Upworkのジョブを自動のに通知
MongoDBとSlackを使ってUpworkの仕事を自動で提醒送信
If
Set
Merge
+
If
Set
Merge
9 ノードArtur
その他
GitHubへワークフローをバックアップ(サブフォルダー)
GitHub へのバックアップ ワークフロー (サブフォルダー)
If
N8n
Set
+
If
N8n
Set
25 ノードNazmy
その他
GitHubへワークフローをバックアップ
ワークフローを GitHub にバックアップする
If
N8n
Set
+
If
N8n
Set
23 ノードSolomon
その他
誕生日と星暦通知
生誕日・旬星通知(Google連絡先、Telegram、Home Assistant)
If
Set
Code
+
If
Set
Code
26 ノードThibaud
その他
毎日のAIニュース翻訳と要約をGPT-4とTelegramで配信
GPT-4およびTelegramを使ったAIニュース翻訳と要約を毎日送信
Set
Merge
Telegram
+
Set
Merge
Telegram
12 ノードSamirLiu
その他
ワークフロー情報
難易度
中級
ノード数10
カテゴリー1
ノードタイプ5
作成者
Marketing Canopy
@johnmarketingcanopyA results-driven Six Sigma Green Belt with 5 years of experience specializing in marketing process optimization, AI-powered data automation, and performance analytics. Adept at leveraging machine learning models, predictive analytics, and automation tools to enhance marketing efficiency, streamline workflows, and maximize ROI.
外部リンク
n8n.ioで表示 →
このワークフローを共有