8
n8n 中文网amn8n.com

将所有Strava活动数据导出到Google Sheets

中级

这是一个Other领域的自动化工作流,包含 13 个节点。主要使用 Set, Code, Sort, Limit, Strava 等节点。 将所有Strava活动数据导出到Google Sheets

前置要求
  • Google Sheets API 凭证

分类

工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "nodes": [
    {
      "id": "fc128eed-1666-46b8-8feb-e6ddf05e85d1",
      "name": "定时触发器",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        380,
        240
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 2
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "830708eb-197b-4bf7-95da-893d78329ab2",
      "name": "Strava",
      "type": "n8n-nodes-base.strava",
      "position": [
        380,
        480
      ],
      "parameters": {
        "limit": 10,
        "operation": "getAll"
      },
      "typeVersion": 1.1
    },
    {
      "id": "de776ebf-3ad5-4c4c-b0c8-7bc74cba5446",
      "name": "代码",
      "type": "n8n-nodes-base.code",
      "position": [
        380,
        740
      ],
      "parameters": {
        "jsCode": "// Obtén los items del nodo \"Strava\"\nconst stravaItems = $('strava_last').all();\n\n// Obtén los items del nodo \"ultimas_id\"\nconst ultimasGuardadasItems = $('saved_last').all();\n\n// Extrae las referencias guardadas en un Set, asegurando el formato como cadena\nconst referenciasGuardadas = new Set(\n    ultimasGuardadasItems.map(item => String(item.json.id))\n);\n\n// Filtra los items de \"Strava\" cuyos IDs no estén en las referencias guardadas\nconst filteredItems = stravaItems.filter(item => {\n    // Convertir el ID actual de Strava a cadena para comparar correctamente\n    return !referenciasGuardadas.has(String(item.json.id));\n});\n\n// Depuración: imprime las referencias y los resultados\nconsole.log('Referencias guardadas:', [...referenciasGuardadas]);\nconsole.log('Items filtrados:', filteredItems);\n\n// Devuelve los items filtrados\nreturn filteredItems;\n\n\n"
      },
      "typeVersion": 2
    },
    {
      "id": "c8a93e6e-67fc-4f6d-bcde-83d3a885c622",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        900,
        740
      ],
      "parameters": {
        "columns": {
          "value": {
            "Kms": "={{ $json.distancia }}",
            "Ref": "={{ $json.id }}",
            "Fecha": "={{ $json.fecha }}",
            "Track": "=http://www.strava.com/activities/{{ $json.id }}",
            "Tiempo": "={{ $json.tiempo }}",
            "Desnivel": "={{ $json.elevacion }}"
          },
          "schema": [
            {
              "id": "Fecha",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Fecha",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Kms",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Kms",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Tiempo",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Tiempo",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Ref",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Ref",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Track",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Track",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Bicicleta",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Bicicleta",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Terreno",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Terreno",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Desnivel",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Desnivel",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": []
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 419561402,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/159k8cDL8hZooz-dsHE6ueWf68mBkHhxVCKnWm-lYLqs/edit#gid=419561402",
          "cachedResultName": "n8n"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "159k8cDL8hZooz-dsHE6ueWf68mBkHhxVCKnWm-lYLqs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/159k8cDL8hZooz-dsHE6ueWf68mBkHhxVCKnWm-lYLqs/edit?usp=drivesdk",
          "cachedResultName": "Sherlo_Bike"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "tyg7FJlIITkSazyi",
          "name": "Nik's Google"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "0ce07d54-97af-4e88-9d27-452191a0b3ba",
      "name": "strava_last",
      "type": "n8n-nodes-base.set",
      "position": [
        1420,
        480
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "423ae4b8-287c-4dc1-b32b-d1b6f1f45efa",
              "name": "id",
              "type": "number",
              "value": "={{ $json.id }}"
            },
            {
              "id": "595802d2-17d0-40be-9e43-d655ffbf4ce0",
              "name": "fecha",
              "type": "string",
              "value": "={{ DateTime.fromISO($json.start_date_local).toFormat('d/M/yyyy') }}"
            },
            {
              "id": "4b39d783-19f2-4a7e-b0e6-dbe2b98f1ae0",
              "name": "distancia",
              "type": "number",
              "value": "={{ Math.round($json.distance / 100) / 10 }}"
            },
            {
              "id": "2f321dc0-435f-4b4d-866c-091ff9eaf9df",
              "name": "elevacion",
              "type": "number",
              "value": "={{ Math.round($json.total_elevation_gain) }}"
            },
            {
              "id": "ba1bb089-5ae7-4e42-ac65-07323c4e1842",
              "name": "tiempo",
              "type": "string",
              "value": "={{ `${Math.floor($json.moving_time / 3600)}:${Math.floor(($json.moving_time % 3600) / 60).toString().padStart(2, '0')}:${($json.moving_time % 60).toString().padStart(2, '0')}` }}\n"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "490f7be9-73c9-4431-8b83-fcdbbcc283eb",
      "name": "移除重复项",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        900,
        480
      ],
      "parameters": {
        "compare": "selectedFields",
        "options": {},
        "fieldsToCompare": "id"
      },
      "typeVersion": 2
    },
    {
      "id": "2d1c4dc5-2baa-4c89-a312-4b40381d4e5d",
      "name": "活动记录",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        660,
        240
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 419561402,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/159k8cDL8hZooz-dsHE6ueWf68mBkHhxVCKnWm-lYLqs/edit#gid=419561402",
          "cachedResultName": "n8n"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "159k8cDL8hZooz-dsHE6ueWf68mBkHhxVCKnWm-lYLqs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/159k8cDL8hZooz-dsHE6ueWf68mBkHhxVCKnWm-lYLqs/edit?usp=drivesdk",
          "cachedResultName": "Sherlo_Bike"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "tyg7FJlIITkSazyi",
          "name": "Nik's Google"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "2c7b7939-4ca1-4868-92bf-5fd7384a1103",
      "name": "sort_saved",
      "type": "n8n-nodes-base.sort",
      "position": [
        900,
        240
      ],
      "parameters": {
        "options": {},
        "sortFieldsUi": {
          "sortField": [
            {
              "fieldName": "Ref"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4e1d9064-6dda-4a01-af48-f278792f8b6b",
      "name": "last_saved",
      "type": "n8n-nodes-base.limit",
      "position": [
        1160,
        240
      ],
      "parameters": {
        "keep": "lastItems",
        "maxItems": 10
      },
      "typeVersion": 1
    },
    {
      "id": "6eb2053a-1101-477b-86e9-113813be2d92",
      "name": "saved_last",
      "type": "n8n-nodes-base.set",
      "position": [
        1420,
        240
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "50097932-ab91-4af7-9412-925fab1982f0",
              "name": "id",
              "type": "string",
              "value": "={{ $json.Ref }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "afd986f1-0c49-4a69-b948-aefcbff1010f",
      "name": "sort_strava",
      "type": "n8n-nodes-base.sort",
      "position": [
        660,
        480
      ],
      "parameters": {
        "options": {},
        "sortFieldsUi": {
          "sortField": [
            {
              "fieldName": "id"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "16094d29-f35b-492c-9d93-3145dab30cd3",
      "name": "last_strava",
      "type": "n8n-nodes-base.limit",
      "position": [
        1160,
        480
      ],
      "parameters": {
        "keep": "lastItems",
        "maxItems": 10
      },
      "typeVersion": 1
    },
    {
      "id": "9986360b-fcd3-42f4-ad13-aea69f6d1a80",
      "name": "sort_results",
      "type": "n8n-nodes-base.sort",
      "position": [
        660,
        740
      ],
      "parameters": {
        "options": {},
        "sortFieldsUi": {
          "sortField": [
            {
              "fieldName": "id"
            }
          ]
        }
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "sort_results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Strava": {
      "main": [
        [
          {
            "node": "sort_strava",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "activities": {
      "main": [
        [
          {
            "node": "sort_saved",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "last_saved": {
      "main": [
        [
          {
            "node": "saved_last",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "saved_last": {
      "main": [
        [
          {
            "node": "Strava",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "sort_saved": {
      "main": [
        [
          {
            "node": "last_saved",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "last_strava": {
      "main": [
        [
          {
            "node": "strava_last",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "sort_strava": {
      "main": [
        [
          {
            "node": "Remove Duplicates",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "strava_last": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "sort_results": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "activities",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Remove Duplicates": {
      "main": [
        [
          {
            "node": "last_strava",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

中级 - 其他

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
中级
节点数量13
分类1
节点类型8
难度说明

适合有一定经验的用户,包含 6-15 个节点的中等复杂度工作流

外部链接
在 n8n.io 查看

分享此工作流