テンプレートに戻る
ワークフローテンプレート
Clockify To Syncro | Operasyon için n8n Otomasyon İş Akışı Şablonu (Webhook, Google Sheets, HTTP)
n8n için hazır otomasyon şablonu: Clockify To Syncro. 13 düğüm. Entegrasyonlar: Webhook, Google Sheets, HTTP. JSON'u kopyalayıp n8n'e içe aktarın.
13 ノードClockify_To_Syncro-workflow.json
{"id": "3","name": "Clockify to Syncro","nodes": [{"name": "Webhook","type": "n8n-nodes-base.webhook","position": [280,350],"webhookId": "82b654d7-aeb2-4cc1-97a8-0ebd1a729202","parameters": {"path": "82b654d7-aeb2-4cc1-97a8-0ebd1a729202","options": {},"httpMethod": "POST","responseData": "allEntries","responseMode": "lastNode"},"typeVersion": 1},{"name": "Google Sheets","type": "n8n-nodes-base.googleSheets","position": [1830,350],"parameters": {"range": "A:B","options": {"valueInputMode": "USER_ENTERED"},"sheetId": "xxx","operation": "append"},"credentials": {"googleApi": "Google"},"typeVersion": 1},{"name": "ForGoogle","type": "n8n-nodes-base.set","position": [1650,350],"parameters": {"values": {"string": [{"name": "Syncro","value": "={{$json[\"id\"]}}"},{"name": "Clockify","value": "={{$node[\"Webhook\"].json[\"body\"][\"id\"]}}"}]},"options": {},"keepOnlySet": true},"typeVersion": 1},{"name": "ForSyncro","type": "n8n-nodes-base.set","position": [730,350],"parameters": {"values": {"string": [{"name": "id","value": "={{ $json[\"body\"][\"project\"][\"name\"].match(/\\[(\\d+)]/)[1] }}"}]},"options": {},"keepOnlySet": true},"typeVersion": 1},{"name": "FindMatch","type": "n8n-nodes-base.googleSheets","position": [1130,350],"parameters": {"range": "A:B","options": {"valueRenderMode": "UNFORMATTED_VALUE","returnAllMatches": true},"sheetId": "xxx","operation": "lookup","lookupValue": "={{$node[\"Webhook\"].json[\"body\"][\"id\"]}}","lookupColumn": "=Clockify"},"credentials": {"googleApi": "Google"},"typeVersion": 1,"alwaysOutputData": true},{"name": "IF","type": "n8n-nodes-base.if","position": [1300,350],"parameters": {"conditions": {"string": [],"boolean": [{"value1": "={{!!Object.keys($node[\"FindMatch\"].data).length}}","value2": true}]}},"typeVersion": 1,"alwaysOutputData": false},{"name": "NewSyncroTimer","type": "n8n-nodes-base.httpRequest","position": [1490,350],"parameters": {"url": "={{$node[\"EnvVariables\"].json[\"syncro_baseurl\"]}}/api/v1/tickets/{{$node[\"ForSyncro\"].json[\"id\"]}}/timer_entry","options": {},"requestMethod": "POST","authentication": "headerAuth","bodyParametersUi": {"parameter": [{"name": "start_at","value": "={{$node[\"Webhook\"].json[\"body\"][\"timeInterval\"][\"start\"]}}"},{"name": "end_at","value": "={{$node[\"Webhook\"].json[\"body\"][\"timeInterval\"][\"end\"]}}"},{"name": "notes","value": "={{$node[\"Webhook\"].json[\"body\"][\"description\"]}}"},{"name": "user_id","value": "={{$node[\"MatchTechnician\"].json[\"id\"]}}"}]}},"credentials": {"httpHeaderAuth": "Syncro"},"typeVersion": 1},{"name": "UpdateSyncroTimer","type": "n8n-nodes-base.httpRequest","position": [1490,580],"parameters": {"url": "={{$node[\"EnvVariables\"].json[\"syncro_baseurl\"]}}/api/v1/tickets/{{$node[\"ForSyncro\"].json[\"id\"]}}/update_timer_entry","options": {"followRedirect": true},"requestMethod": "PUT","authentication": "headerAuth","bodyParametersUi": {"parameter": [{"name": "timer_entry_id","value": "={{$node[\"IF\"].json[\"Syncro\"]}}"},{"name": "start_time","value": "={{$node[\"Webhook\"].json[\"body\"][\"timeInterval\"][\"start\"]}}"},{"name": "end_time","value": "={{$node[\"Webhook\"].json[\"body\"][\"timeInterval\"][\"end\"]}}"},{"name": "notes","value": "={{$node[\"Webhook\"].json[\"body\"][\"description\"]}}"},{"name": "user_id","value": "={{$node[\"MatchTechnician\"].json[\"id\"]}}"}]}},"credentials": {"httpHeaderAuth": "Syncro"},"typeVersion": 1},{"name": "EnvVariables","type": "n8n-nodes-base.set","position": [580,350],"parameters": {"values": {"string": [{"name": "syncro_baseurl","value": "https://subdomain.syncromsp.com"}]},"options": {}},"typeVersion": 1},{"name": "SetTechnicians","type": "n8n-nodes-base.set","position": [870,350],"parameters": {"values": {"string": [{"name": "Tech 1","value": "1234"},{"name": "Tech 2","value": "5678"}]},"options": {},"keepOnlySet": true},"typeVersion": 1},{"name": "MatchTechnician","type": "n8n-nodes-base.function","position": [1000,350],"parameters": {"functionCode": "\nconst results = [];\n\nconst user = $node[\"Webhook\"].json[\"body\"][\"user\"];\n\nconst persons = items[0].json\n\nfor (key of Object.keys(persons)) {\n if (key === user.name) {\n results.push({ json: { id: persons[key], name: key } })\n }\n}\n\nreturn results;"},"typeVersion": 1},{"name": "IF1","type": "n8n-nodes-base.if","position": [420,350],"parameters": {"conditions": {"string": [{"value1": "={{$json[\"body\"][\"project\"][\"name\"]}}","value2": "Ticket","operation": "contains"}]}},"typeVersion": 1},{"name": "NoOp","type": "n8n-nodes-base.noOp","position": [480,520],"parameters": {},"typeVersion": 1}],"active": true,"settings": {},"connections": {"IF": {"main": [[{"node": "UpdateSyncroTimer","type": "main","index": 0}],[{"node": "NewSyncroTimer","type": "main","index": 0}]]},"IF1": {"main": [[{"node": "EnvVariables","type": "main","index": 0}],[{"node": "NoOp","type": "main","index": 0}]]},"Webhook": {"main": [[{"node": "IF1","type": "main","index": 0}]]},"FindMatch": {"main": [[{"node": "IF","type": "main","index": 0}]]},"ForGoogle": {"main": [[{"node": "Google Sheets","type": "main","index": 0}]]},"ForSyncro": {"main": [[{"node": "SetTechnicians","type": "main","index": 0}]]},"EnvVariables": {"main": [[{"node": "ForSyncro","type": "main","index": 0}]]},"NewSyncroTimer": {"main": [[{"node": "ForGoogle","type": "main","index": 0}]]},"SetTechnicians": {"main": [[{"node": "MatchTechnician","type": "main","index": 0}]]},"MatchTechnician": {"main": [[{"node": "FindMatch","type": "main","index": 0}]]}}}
n8n エディター内:Ctrl+V で貼り付け→ワークフローが作成されます