About microsoft-excel
microsoft-excel is a skill for working with live Excel workbooks stored in OneDrive or SharePoint. It uses Microsoft Graph workbook APIs through curl and jq to inspect worksheets and ranges and make edits to cloud workbooks.
Key features
- 01Find cloud workbooks by name
- 02List workbook worksheets
- 03Read used and specified ranges
- 04Write values to ranges
- 05Append rows to tables
Use cases
- 01Inspecting a workbook stored in OneDrive
- 02Updating cell values in a range
- 03Adding a record to a workbook table
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ acedatacloud/ skills --skill microsoft-excelAfter installing, type/microsoft-excelin Claude Code to confirm it loaded.
Details
From the project READMEDrive live Excel workbooks via the Microsoft Graph workbook API with
curl + jq. The user's OAuth bearer token is in $MICROSOFT_EXCEL_TOKEN; every
call needs Authorization: Bearer $MICROSOFT_EXCEL_TOKEN. Base URL:
https://graph.microsoft.com/v1.0. The workbook API operates on a drive item
(an .xlsx in OneDrive/SharePoint), so you need its ITEM_ID.
Failures are {"error":{"code","message"}} — show message verbatim. 401 =
token expired (re-install). 403 on a write = the user granted read-only.
G="https://graph.microsoft.com/v1.0"; AUTH="Authorization: Bearer $MICROSOFT_EXCEL_TOKEN"
# Find the workbook by name (then take .id as ITEM_ID)
curl -sS -H "$AUTH" "$G/me/drive/root/search(q='budget.xlsx')" \
| jq '.value[] | {id, name, webUrl}'
# Worksheets in the workbook
curl -sS -H "$AUTH" "$G/me/drive/items/ITEM_ID/workbook/worksheets" \
| jq '.value[] | {id, name, position}'
Read & write ranges
ITEM="ITEM_ID"; WS="Sheet1"
# Used range (values + formulas + formats)
curl -sS -H "$AUTH" \
"$G/me/drive/items/$ITEM/workbook/worksheets/$WS/usedRange" \
| jq '{address, values: .values}'
# Read a specific range
curl -sS -H "$AUTH" \
"$G/me/drive/items/$ITEM/workbook/worksheets/$WS/range(address='A1:C5')" | jq '.values'
# Update a range (confirm first). values is a 2-D array matching the address shape.
curl -sS -X PATCH -H "$AUTH" -H "Content-Type: application/json" \
-d '{"values":[["Q3",1200],["Q4",1580]]}' \
"$G/me/drive/items/$ITEM/workbook/worksheets/$WS/range(address='A2:B3')" | jq '.address'
Append a row to a table
curl -sS -X POST -H "$AUTH" -H "Content-Type: application/json" \
-d '{"values":[["2026-06-21","Acme",4200]]}' \
"$G/me/drive/items/$ITEM/workbook/tables/Table1/rows/add" | jq '.index'
Gotchas
- This is for cloud workbooks (OneDrive/SharePoint). A local .xlsx the user uploaded into chat is a different job (parse the file directly), not this skill.
- Range
addressis a string likeSheet1!A1:C5or justA1:C5when scoped to a worksheet;valuesmust be a 2-D array matching its dimensions. - For long-running edits Graph supports a workbook session header
(
workbook-session-id); for a few cells the default sessionless mode is fine.