recipe-copy-sheet-for-new-month — Claude skill: duplicate a Sheets tab
This skill copies a template tab in Google Sheets and renames it for a new month of tracking. Useful when the same monthly setup keeps landing on your to-do list.
npx skills add googleworkspace/cli --skill recipe-copy-sheet-for-new-month -a claude-codeWhat recipe-copy-sheet-for-new-month does
The skill runs three steps through the gws CLI. It pulls spreadsheet details, copies the template sheet into the same spreadsheet, then renames the new tab — for example to "February 2025".
There is no extra scripting here. The recipe is a sequence of gws sheets calls: spreadsheets get, sheets copyTo, and batchUpdate with updateSheetProperties. It depends on the gws-sheets skill, which has to be loaded first.
Worth installing if your monthly tracking lives in Google Sheets and you already drive it with gws. For a single spreadsheet you touch twice a year, copying the tab by hand is faster.
What it helps with
- copy a template tab for a new month
- rename the fresh sheet after the month
- fetch spreadsheet details before copying
- update sheet properties through batchUpdate
- repeat the same Sheets routine without manual clicks
Example prompts for the agent
- Copy the template sheet in SHEET_ID and name it February 2025
- Create a new month of tracking from the template tab
- Duplicate sheet 0 in the same spreadsheet and rename it
How to install recipe-copy-sheet-for-new-month
1Skills CLI (Vercel)
npx skills add googleworkspace/cli --skill recipe-copy-sheet-for-new-month -a claude-code2Manually: put the files in place
~/.claude/skills/recipe-copy-sheet-for-new-month/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/recipe-copy-sheet-for-new-month/
1Skills CLI (Vercel)
npx skills add googleworkspace/cli --skill recipe-copy-sheet-for-new-month -a codex2Manually: put the files in place
.agents/skills/recipe-copy-sheet-for-new-month/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add googleworkspace/cli --skill recipe-copy-sheet-for-new-month -a cursor2Manually: put the files in place
.cursor/skills/recipe-copy-sheet-for-new-month/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install googleworkspace/cli recipe-copy-sheet-for-new-month2Manually: put the files in place
.github/skills/recipe-copy-sheet-for-new-month/SKILL.md1Skills CLI (Vercel)
npx skills add googleworkspace/cli --skill recipe-copy-sheet-for-new-month -a gemini-cli2Platform CLI
gemini skills install https://github.com/googleworkspace/cli --path skills/recipe-copy-sheet-for-new-monthManually: put the files in place
.devin/skills/recipe-copy-sheet-for-new-month/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add googleworkspace/cli --skill recipe-copy-sheet-for-new-month -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set95
The whole set →Similar
Questions about recipe-copy-sheet-for-new-month
How do I install recipe-copy-sheet-for-new-month in Claude?
Run npx skills add googleworkspace/cli --skill recipe-copy-sheet-for-new-month -a claude-code. The skill file lands at ~/.claude/skills/recipe-copy-sheet-for-new-month/SKILL.md.
What does recipe-copy-sheet-for-new-month do?
It duplicates a template tab in Google Sheets and renames it for a new month of tracking, using three gws commands.
What do I need before running it?
The gws binary and the gws-sheets skill loaded — the recipe will not run without it.
Source text
SKILL.md · Apache-2.0
---
name: recipe-copy-sheet-for-new-month
description: "Duplicate a Google Sheets template tab for a new month of tracking."
metadata:
version: 0.22.5
openclaw:
category: "recipe"
domain: "productivity"
requires:
bins:
- gws
skills:
- gws-sheets
---
# Copy a Google Sheet for a New Month
> **PREREQUISITE:** Load the following skills to execute this recipe: `gws-sheets`
Duplicate a Google Sheets template tab for a new month of tracking.
## Steps
1. Get spreadsheet details: `gws sheets spreadsheets get --params '{"spreadsheetId": "SHEET_ID"}'`
2. Copy the template sheet: `gws sheets spreadsheets sheets copyTo --params '{"spreadsheetId": "SHEET_ID", "sheetId": 0}' --json '{"destinationSpreadsheetId": "SHEET_ID"}'`
3. Rename the new tab: `gws sheets spreadsheets batchUpdate --params '{"spreadsheetId": "SHEET_ID"}' --json '{"requests": [{"updateSheetProperties": {"properties": {"sheetId": 123, "title": "February 2025"}, "fields": "title"}}]}'`
© googleworkspace · Apache-2.0 · googleworkspace/cli