microsoft-excellisted
Install: claude install-skill AceDataCloud/Skills
Drive **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.
```bash
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
```bash
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/