{
  "schemaVersion": "1.0",
  "item": {
    "slug": "google-sheet",
    "name": "Skill to manage and update google sheet",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/longmaba/google-sheet",
    "canonicalUrl": "https://clawhub.ai/longmaba/google-sheet",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/google-sheet",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=google-sheet",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "package-lock.json",
      "package.json",
      "SKILL.md",
      "env_example.md",
      "scripts/sheets.js"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/google-sheet"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/google-sheet",
    "agentPageUrl": "https://openagent3.xyz/skills/google-sheet/agent",
    "manifestUrl": "https://openagent3.xyz/skills/google-sheet/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/google-sheet/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Google Sheets Skill",
        "body": "Interact with Google Sheets using a service account."
      },
      {
        "title": "Setup (One-time)",
        "body": "Google Cloud Console:\n\nCreate/select a project\nEnable \"Google Sheets API\"\nCreate a Service Account (IAM → Service Accounts → Create)\nDownload JSON key\n\n\n\nConfigure credentials (one of these):\n\nSet env: GOOGLE_SERVICE_ACCOUNT_KEY=/path/to/key.json\nPlace service-account.json or credentials.json in the skill directory\nPlace in ~/.config/google-sheets/credentials.json\n\n\n\nShare sheets with the service account email (found in JSON key as client_email)\n\n\nInstall dependencies:\ncd skills/google-sheets && npm install"
      },
      {
        "title": "Usage",
        "body": "node scripts/sheets.js <command> [args]"
      },
      {
        "title": "Data Operations",
        "body": "CommandArgsDescriptionread<id> <range>Read cellswrite<id> <range> <json>Write dataappend<id> <range> <json>Append rowsclear<id> <range>Clear range"
      },
      {
        "title": "Formatting",
        "body": "CommandArgsDescriptionformat<id> <range> <formatJson>Format cellsgetFormat<id> <range>Get cell formatsborders<id> <range> [styleJson]Add borderscopyFormat<id> <source> <dest>Copy format between rangesmerge<id> <range>Merge cellsunmerge<id> <range>Unmerge cells"
      },
      {
        "title": "Layout",
        "body": "CommandArgsDescriptionresize<id> <sheet> <cols|rows> <start> <end> <px>Resize columns/rowsautoResize<id> <sheet> <startCol> <endCol>Auto-fit columnsfreeze<id> <sheet> [rows] [cols]Freeze rows/columns"
      },
      {
        "title": "Sheet Management",
        "body": "CommandArgsDescriptioncreate<title>Create spreadsheetinfo<id>Get metadataaddSheet<id> <title>Add sheet tabdeleteSheet<id> <sheetName>Delete sheet tabrenameSheet<id> <oldName> <newName>Rename sheet tab"
      },
      {
        "title": "Examples",
        "body": "# Read data\nnode scripts/sheets.js read \"SPREADSHEET_ID\" \"Sheet1!A1:C10\"\n\n# Write data\nnode scripts/sheets.js write \"SPREADSHEET_ID\" \"Sheet1!A1:B2\" '[[\"Name\",\"Score\"],[\"Alice\",95]]'\n\n# Format cells (yellow bg, bold)\nnode scripts/sheets.js format \"SPREADSHEET_ID\" \"Sheet1!A1:B2\" '{\"backgroundColor\":{\"red\":255,\"green\":255,\"blue\":0},\"textFormat\":{\"bold\":true}}'\n\n# Copy format from one range to another\nnode scripts/sheets.js copyFormat \"SPREADSHEET_ID\" \"Sheet1!A1:C3\" \"Sheet1!D1:F3\"\n\n# Add borders\nnode scripts/sheets.js borders \"SPREADSHEET_ID\" \"Sheet1!A1:C3\"\n\n# Resize columns to 150px\nnode scripts/sheets.js resize \"SPREADSHEET_ID\" \"Sheet1\" cols A C 150\n\n# Auto-fit column widths\nnode scripts/sheets.js autoResize \"SPREADSHEET_ID\" \"Sheet1\" A Z\n\n# Freeze first row and column\nnode scripts/sheets.js freeze \"SPREADSHEET_ID\" \"Sheet1\" 1 1\n\n# Add new sheet tab\nnode scripts/sheets.js addSheet \"SPREADSHEET_ID\" \"NewSheet\""
      },
      {
        "title": "Format Options",
        "body": "{\n  \"backgroundColor\": {\"red\": 255, \"green\": 255, \"blue\": 0},\n  \"textFormat\": {\n    \"bold\": true,\n    \"italic\": false,\n    \"fontSize\": 12,\n    \"foregroundColor\": {\"red\": 0, \"green\": 0, \"blue\": 0}\n  },\n  \"horizontalAlignment\": \"CENTER\",\n  \"verticalAlignment\": \"MIDDLE\",\n  \"wrapStrategy\": \"WRAP\"\n}"
      },
      {
        "title": "Border Style",
        "body": "{\n  \"style\": \"SOLID\",\n  \"color\": {\"red\": 0, \"green\": 0, \"blue\": 0}\n}\n\nBorder styles: DOTTED, DASHED, SOLID, SOLID_MEDIUM, SOLID_THICK, DOUBLE"
      },
      {
        "title": "Finding Spreadsheet ID",
        "body": "From URL: https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit"
      },
      {
        "title": "Troubleshooting",
        "body": "403 Forbidden: Sheet not shared with service account email\n404 Not Found: Wrong spreadsheet ID or sheet name"
      }
    ],
    "body": "Google Sheets Skill\n\nInteract with Google Sheets using a service account.\n\nSetup (One-time)\n\nGoogle Cloud Console:\n\nCreate/select a project\nEnable \"Google Sheets API\"\nCreate a Service Account (IAM → Service Accounts → Create)\nDownload JSON key\n\nConfigure credentials (one of these):\n\nSet env: GOOGLE_SERVICE_ACCOUNT_KEY=/path/to/key.json\nPlace service-account.json or credentials.json in the skill directory\nPlace in ~/.config/google-sheets/credentials.json\n\nShare sheets with the service account email (found in JSON key as client_email)\n\nInstall dependencies:\n\ncd skills/google-sheets && npm install\n\nUsage\nnode scripts/sheets.js <command> [args]\n\nCommands\nData Operations\nCommand\tArgs\tDescription\nread\t<id> <range>\tRead cells\nwrite\t<id> <range> <json>\tWrite data\nappend\t<id> <range> <json>\tAppend rows\nclear\t<id> <range>\tClear range\nFormatting\nCommand\tArgs\tDescription\nformat\t<id> <range> <formatJson>\tFormat cells\ngetFormat\t<id> <range>\tGet cell formats\nborders\t<id> <range> [styleJson]\tAdd borders\ncopyFormat\t<id> <source> <dest>\tCopy format between ranges\nmerge\t<id> <range>\tMerge cells\nunmerge\t<id> <range>\tUnmerge cells\nLayout\nCommand\tArgs\tDescription\nresize\t<id> <sheet> <cols|rows> <start> <end> <px>\tResize columns/rows\nautoResize\t<id> <sheet> <startCol> <endCol>\tAuto-fit columns\nfreeze\t<id> <sheet> [rows] [cols]\tFreeze rows/columns\nSheet Management\nCommand\tArgs\tDescription\ncreate\t<title>\tCreate spreadsheet\ninfo\t<id>\tGet metadata\naddSheet\t<id> <title>\tAdd sheet tab\ndeleteSheet\t<id> <sheetName>\tDelete sheet tab\nrenameSheet\t<id> <oldName> <newName>\tRename sheet tab\nExamples\n# Read data\nnode scripts/sheets.js read \"SPREADSHEET_ID\" \"Sheet1!A1:C10\"\n\n# Write data\nnode scripts/sheets.js write \"SPREADSHEET_ID\" \"Sheet1!A1:B2\" '[[\"Name\",\"Score\"],[\"Alice\",95]]'\n\n# Format cells (yellow bg, bold)\nnode scripts/sheets.js format \"SPREADSHEET_ID\" \"Sheet1!A1:B2\" '{\"backgroundColor\":{\"red\":255,\"green\":255,\"blue\":0},\"textFormat\":{\"bold\":true}}'\n\n# Copy format from one range to another\nnode scripts/sheets.js copyFormat \"SPREADSHEET_ID\" \"Sheet1!A1:C3\" \"Sheet1!D1:F3\"\n\n# Add borders\nnode scripts/sheets.js borders \"SPREADSHEET_ID\" \"Sheet1!A1:C3\"\n\n# Resize columns to 150px\nnode scripts/sheets.js resize \"SPREADSHEET_ID\" \"Sheet1\" cols A C 150\n\n# Auto-fit column widths\nnode scripts/sheets.js autoResize \"SPREADSHEET_ID\" \"Sheet1\" A Z\n\n# Freeze first row and column\nnode scripts/sheets.js freeze \"SPREADSHEET_ID\" \"Sheet1\" 1 1\n\n# Add new sheet tab\nnode scripts/sheets.js addSheet \"SPREADSHEET_ID\" \"NewSheet\"\n\nFormat Options\n{\n  \"backgroundColor\": {\"red\": 255, \"green\": 255, \"blue\": 0},\n  \"textFormat\": {\n    \"bold\": true,\n    \"italic\": false,\n    \"fontSize\": 12,\n    \"foregroundColor\": {\"red\": 0, \"green\": 0, \"blue\": 0}\n  },\n  \"horizontalAlignment\": \"CENTER\",\n  \"verticalAlignment\": \"MIDDLE\",\n  \"wrapStrategy\": \"WRAP\"\n}\n\nBorder Style\n{\n  \"style\": \"SOLID\",\n  \"color\": {\"red\": 0, \"green\": 0, \"blue\": 0}\n}\n\n\nBorder styles: DOTTED, DASHED, SOLID, SOLID_MEDIUM, SOLID_THICK, DOUBLE\n\nFinding Spreadsheet ID\n\nFrom URL: https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit\n\nTroubleshooting\n403 Forbidden: Sheet not shared with service account email\n404 Not Found: Wrong spreadsheet ID or sheet name"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/longmaba/google-sheet",
    "publisherUrl": "https://clawhub.ai/longmaba/google-sheet",
    "owner": "longmaba",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/google-sheet",
    "downloadUrl": "https://openagent3.xyz/downloads/google-sheet",
    "agentUrl": "https://openagent3.xyz/skills/google-sheet/agent",
    "manifestUrl": "https://openagent3.xyz/skills/google-sheet/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/google-sheet/agent.md"
  }
}