English
Excel
Reads and fills in an Excel workbook stored on SharePoint or on your OneDrive.
The Excel node reads and fills in an Excel workbook stored on a SharePoint site or on the member's OneDrive: the tracking workbook a team keeps by hand, which a workflow completes. Its three everyday gestures are adding a row when a new case arrives, updating the row of a case when a milestone is reached, and appending a timestamped comment to a cell without overwriting what is there. It is one node with a resource (resource) and, for each resource, an action.
The first question, Where the workbook lives (location), decides which access is needed:
sharepoint(default): the SharePoint capability, set in the Microsoft account field (credential); the workbook is picked through Site, Document library and Workbook. This access usually needs a Microsoft 365 administrator to grant consent once for the organization.onedrive: the Files capability (OneDrive), set in the second Microsoft account field (credentialFiles); the workbook is picked in Workbook (workbookFile) among the files of the member's OneDrive.
Both are connected in Connections; see Microsoft. The workbook list offers .xlsx, .xlsm and .xltx files. For a Google spreadsheet, use Sheets — append a row; for a table kept inside the product, see Tables.
At a glance
- Type:
excel.api· version 1 - Category: Actions
- Kind: Step — one stage of a run
- Effect: Writes outside (
external_write) — writes outside Mankomail; described instead of performed during a test run - Needs a carrier email: No
- Connection: Microsoft (capability
sharepoint), Microsoft (capabilityfiles) - Inputs:
main - Outputs:
main
Connection
This node needs a Microsoft connection with the sharepoint capability granted.
This node needs a Microsoft connection with the files capability granted.
Parameters
location
Where the workbook lives
- Type: One choice (
options) - Required: Yes
- Default:
sharepoint - Options:
sharepoint— On a SharePoint site: The case of a workbook shared by the team. Requires the SharePoint connection.onedrive— On my OneDrive: A personal workbook. Requires the OneDrive (Files) connection.
credential
Microsoft account — The account whose SharePoint rights are borrowed. This authorization usually needs a Microsoft 365 administrator to approve it.
- Type: Connection (
credential) - Required: No
- Default:
""(empty) - Shown when:
locationissharepoint
credentialFiles
Microsoft account — The account whose OneDrive is used. Connect it from Connections.
- Type: Connection (
credential) - Required: No
- Default:
""(empty) - Shown when:
locationisonedrive
site
Site — The site that hosts the workbook library.
- Type: Remote resource (
resourceLocator) - Required: No
- Default:
{"mode":"id","value":""} - Ways to choose: pick from a list, type an ID, paste a URL (
sharepoint.site) - Listed with the connection in:
credential - Shown when:
locationissharepoint
library
Document library
- Type: Remote resource (
resourceLocator) - Required: No
- Default:
{"mode":"id","value":""} - Ways to choose: pick from a list, type an ID (
sharepoint.library) - Listed inside:
site - Listed with the connection in:
credential - Shown when:
locationissharepoint
workbook
Workbook — The .xlsx file to read or fill in.
- Type: Remote resource (
resourceLocator) - Required: No
- Default:
{"mode":"id","value":""} - Ways to choose: pick from a list, type an ID (
excel.workbook) - Listed inside:
library - Listed with the connection in:
credential - Shown when:
locationissharepoint
workbookFile
Workbook — The .xlsx file on your OneDrive.
- Type: Remote resource (
resourceLocator) - Required: No
- Default:
{"mode":"id","value":""} - Ways to choose: pick from a list, type an ID (
excel.onedrive_workbook) - Listed with the connection in:
credentialFiles - Shown when:
locationisonedrive
resource
What to act on
- Type: One choice (
options) - Required: Yes
- Default:
table - Options:
sheet— Worksheet: The workbook worksheets.table— Table: A named table with its headers: the shape a tracker almost always has.range— Range: A rectangle of cells (A1:D20) — when there is no table.cell— Cell: One precise cell: a milestone date, a timestamped comment.
sheetOperation
Action
- Type: One choice (
options) - Required: Yes
- Default:
sheet.list - Options:
sheet.list— List worksheets: The workbook’s worksheets, hidden ones included (visibletells them apart), in their own order — which carries meaning.
- Shown when:
resourceissheet
tableOperation
Action
- Type: One choice (
options) - Required: Yes
- Default:
table.add - Options:
table.list— List tables: The workbook tables and their headers.table.read— Read rows: The rows, as named columns, with pagination.table.add— Add a row: Appends at the end. With a key column, a retry of the step adds no duplicate.table.update— Update a row: Finds the row by a key column value, then writes the named columns.table.delete— Delete a row: Removes the row carrying that value.
- Shown when:
resourceistable
rangeOperation
Action
- Type: One choice (
options) - Required: Yes
- Default:
range.read - Options:
range.read— Read a range: Leave the address empty to read the whole used area of the worksheet.range.write— Write a range: The address is required: writing "somewhere" is not an option.
- Shown when:
resourceisrange
cellOperation
Action
- Type: One choice (
options) - Required: Yes
- Default:
cell.append - Options:
cell.read— Read a cell: Returns its content.cell.write— Write a cell: Replaces the cell content.cell.append— Append to a cell: Appends after what is already there — "one action = one timestamped comment".
- Shown when:
resourceiscell
sheet
Worksheet
- Type: Remote resource (
resourceLocator) - Required: No
- Default:
{"mode":"id","value":""} - Ways to choose: pick from a list, type an ID (
excel.sheet) - Listed inside:
workbook - Listed with the connection in:
credential - Shown when:
locationissharepointand (resourceisrangeorresourceiscellor (resourceistableandtableOperationis one oftable.list))
sheetName
Worksheet — The worksheet name, as it appears at the bottom of the workbook.
- Type: Text (
string) - Required: No
- Default:
""(empty) - 200 characters at most
- Example:
Tracker - Shown when:
locationisonedriveand (resourceisrangeorresourceiscellor (resourceistableandtableOperationis one oftable.list)) - Expressions:
{{ }}accepted
table
Table
- Type: Remote resource (
resourceLocator) - Required: No
- Default:
{"mode":"id","value":""} - Ways to choose: pick from a list, type an ID (
excel.table) - Listed inside:
workbook - Listed with the connection in:
credential - Shown when:
locationissharepointand (resourceistableandtableOperationis one oftable.read,table.add,table.update,table.delete)
tableName
Table — The table name (Table Design → Table Name, in Excel).
- Type: Text (
string) - Required: No
- Default:
""(empty) - 200 characters at most
- Example:
Table1 - Shown when:
locationisonedriveand (resourceistableandtableOperationis one oftable.read,table.add,table.update,table.delete) - Expressions:
{{ }}accepted
values
Columns to write — The key is the column header, exactly as written in the table. Columns you omit keep their value.
- Type: Key / value pairs (
keyValue) - Required: No
- Default:
[] - Shown when:
resourceistableandtableOperationis one oftable.add,table.update - Expressions:
{{ }}accepted
keyColumn
Matching column — The header that identifies the row — “Matter number”. On an add it guards against duplicates; left empty, a retry of the step would add a second row.
- Type: Text (
string) - Required: No
- Default:
""(empty) - 200 characters at most
- Example:
Matter number - Shown when:
resourceistableandtableOperationis one oftable.add,table.update,table.delete - Expressions:
{{ }}accepted
keyValue
Value to match — Accepts {{ }} expressions: {{ data.extract_1.matter }}.
- Type: Text (
string) - Required: No
- Default:
""(empty) - 500 characters at most
- Example:
{{ data.extract_1.matter }} - Shown when:
resourceistableandtableOperationis one oftable.update,table.delete - Expressions:
{{ }}accepted
address
Address — A range (A1:D20) or a cell (C12). When reading a range, left empty, the whole used area of the worksheet is returned.
- Type: Text (
string) - Required: No
- Default:
""(empty) - 100 characters at most
- Example:
C12 - Shown when:
resourceisrangeorresourceiscell - Expressions:
{{ }}accepted
rows
Values — One line per spreadsheet row, cells separated by semicolons or tabs. A JSON array ([["a","b"],["c","d"]]) is accepted too.
- Type: Long text (
text) - Required: No
- Default:
""(empty) - 100000 characters at most
- Example:
Smith;2026-0412;Open - Shown when:
resourceisrangeandrangeOperationis one ofrange.write - Expressions:
{{ }}accepted
value
Value — Accepts {{ }} expressions. Excel reads dates and numbers according to the cell format.
- Type: Text (
string) - Required: No
- Default:
""(empty) - 32000 characters at most
- Shown when:
resourceiscellandcellOperationis one ofcell.write - Expressions:
{{ }}accepted
text
Text to append — Accepts {{ }} expressions: {{ now }} — {{ data.categorize_1.category }}. What the cell already holds is kept.
- Type: Long text (
text) - Required: No
- Default:
""(empty) - 4000 characters at most
- Shown when:
resourceiscellandcellOperationis one ofcell.append - Expressions:
{{ }}accepted
separator
Separator
- Type: One choice (
options) - Required: No
- Default:
newline - Options:
newline— A new line: The case of a comment history.space— A space: To stay on a single line.semicolon— A semicolon: For a list on a single line.
- Shown when:
resourceiscellandcellOperationis one ofcell.append
limit
Maximum rows
- Type: Number (
number) - Required: No
- Default:
50 - Whole number, from 1 to 500
- Shown when:
resourceistableandtableOperationis one oftable.read
offset
Rows to skip — The pagination: 0 for the first page, then the total already read.
- Type: Number (
number) - Required: No
- Default:
0 - Whole number, from 0 to 1000000
- Shown when:
resourceistableandtableOperationis one oftable.read
session
Open a workbook session — Ticked (recommended), the step calls share one session: it is faster, and they all see the same workbook state.
- Type: Yes / no (
boolean) - Required: No
- Default:
true
Outputs
main
Data produced
What this node adds to the run data, and how to read it in an expression. <step> stands for the step key: the node name turned into an identifier (see Data and expressions).
{{ data.<step>.sheets }}—array of { id, name, position, visible }. sheet.list: the worksheets of the workbook, in their order.visibleisfalsefor a hidden worksheet.{{ data.<step>.names }}—array of string. sheet.list: the worksheet names, in order.{{ data.<step>.tables }}—array of { id, name, worksheet?, headers }. table.list: the named tables, each with its header row.worksheetis only present when a worksheet was chosen.{{ data.<step>.headers }}—array of string. table.read: the table's column headers, in order.{{ data.<step>.rows }}—array of object. table.read: the rows read, each as an object whose keys are the column headers and whose values are the cell texts.{{ data.<step>.rows.0.<header> }}—string. table.read: the value of one column in the first row read. Only reachable this way when the header is made of letters, digits,_and$.{{ data.<step>.truncated }}—boolean. table.read:truewhen more rows remain after the ones returned.{{ data.<step>.nextOffset }}—number. table.read: the value to put in Rows to skip to read the next page.{{ data.<step>.added }}—number. table.add:1when the row was added,0when the key value was already in the table.{{ data.<step>.duplicates }}—number. table.add:1when the row was not added because the Matching column already held its value,0otherwise.{{ data.<step>.found }}—boolean. table.update, table.delete:truewhen a row with the key value was found and changed or deleted,falsewhen none was found (nothing was written).{{ data.<step>.index }}—number. table.update, table.delete: the position of the row in the table (0is the first row under the headers).-1when not found and in a test run.{{ data.<step>.address }}—string. range.read, range.write, cell.read, cell.write, cell.append: the address read or written, for exampleTracker!A1:D20orC12.{{ data.<step>.values }}—array of array of string. range.read: the cell texts, row by row.values.0.1is row 1, column 2 of the range.{{ data.<step>.rowCount }}—number. range.read: the number of rows in the range.{{ data.<step>.columnCount }}—number. range.read: the number of columns in the range.{{ data.<step>.cells }}—number. range.write: the number of cells written.{{ data.<step>.value }}—string. cell.read: the cell content. cell.write: the value written. cell.append: the whole cell content after the append.{{ data.<step>.count }}—number. sheet.list, table.list, table.read: the number of entries returned.{{ data.<step>.summary }}—string. A readable sentence describing what the step did.{{ data.<step>.simulated }}—boolean.truewhen the step ran in a test run and the write was only described — the same field as on the Google and Outlook nodes. Alwaysfalsefor a read.
Resources and actions
Set resource, then the action parameter of that resource. On SharePoint, the worksheet and the table are picked from lists (sheet, table); on OneDrive, you type their names (sheetName, tableName).
| Resource | Action parameter | Value | Fields used | Data produced |
|---|---|---|---|---|
sheet | sheetOperation | sheet.list | — | sheets, count, names |
table | tableOperation | table.list | worksheet (optional) | tables, count |
table | tableOperation | table.read | table, limit, offset | headers, rows, count, truncated, nextOffset |
table | tableOperation | table.add | table, values, keyColumn | added, duplicates |
table | tableOperation | table.update | table, keyColumn, keyValue, values | found, index |
table | tableOperation | table.delete | table, keyColumn, keyValue | found, index |
range | rangeOperation | range.read | worksheet, address | address, values, rowCount, columnCount |
range | rangeOperation | range.write | worksheet, address, rows | address, cells |
cell | cellOperation | cell.read | worksheet, address | address, value |
cell | cellOperation | cell.write | worksheet, address, value | address, value |
cell | cellOperation | cell.append | worksheet, address, text, separator | address, value |
- Tables first. A tracker is almost always a named table (Table Design › Table Name in Excel). Table actions address rows by the value of a column, never by a row number, because a row number changes as soon as someone sorts the table.
table.readreturns at most Maximum rows (1 to 500, 50 by default) starting after Rows to skip; read the next page with Rows to skip set tonextOffset.table.addappends one row. In Columns to write (values), each key is a column header exactly as written in the table; columns you leave out stay empty, and a key that matches no header is ignored. With a Matching column, the row is only added if its value for that column is not already in the table.table.updatefinds the first row whose Matching column equals Value to match, then writes the columns given; the other columns keep their value.table.deleteremoves that row. When no row matches, nothing is written andfoundisfalse: the step does not fail.range.readreads a rectangle (A1:D20); with Address left empty, it reads the whole used area of the worksheet.range.writerequires an address: Values (rows) takes one line per row with cells separated by semicolons or tabs, or a JSON array such as[["a","b"],["c","d"]].cell.writereplaces a cell's content.cell.appendadds Text to append after what the cell already holds, separated by a new line (newline, default), a space (space) or;(semicolon).- Workbook session. Open a workbook session (on by default) makes the calls of the step share one session: faster, and all of them see the same state of the workbook. The session is closed at the end of the step.
Example
A sales tracker lives on the Sales SharePoint site, in a table Tracker whose headers include Matter, Client, Status and Signing date. An Extract step named Extract reads the matter number and the client.
Step New matter, when a new case arrives:
location: sharepoint
site: (url mode) https://contoso.sharepoint.com/sites/Sales
library: (list mode) Documents
workbook: (list mode) Sales tracker.xlsx
resource: table
tableOperation: table.add
table: (list mode) Tracker
values:
Matter: {{ data.extract.matter }}
Client: {{ data.extract.client }}
Status: Open
keyColumn: MatterData: { "added": 1, "duplicates": 0 }. If the same matter comes again, nothing is added and the data reads { "added": 0, "duplicates": 1 }.
Step Signed, when the signing confirmation arrives:
resource: table
tableOperation: table.update
table: (list mode) Tracker
keyColumn: Matter
keyValue: {{ data.extract.matter }}
values:
Status: Signed
Signing date: {{ data.extract.date }}Data: { "found": true, "index": 41 }.
Tips
- Replays.
table.update,range.writeandcell.writewrite the same thing again on a replay, which is harmless.table.addis only protected with a Matching column: without one, a replay adds a second row.cell.appenddoes not append if the cell already ends with exactly the same text, so a replay adds nothing; the flip side is that appending the very same text twice in a row is skipped too, which a timestamp in the text avoids. - Unique keys. Update and delete act on the first matching row. Keep the Matching column unique: with two rows sharing a key, a replayed
table.deletewould remove the second one. - Exact names. Column headers and key values are compared exactly, case included (only the surrounding spaces of Matching column and Value to match are removed). A Matching column that is not a header of the table fails with
microsoft.rejected. The search for a key stops after 5,000 rows (microsoft.rejected): filter upstream or split the table. - Formulas in updated rows.
table.updaterewrites the whole row with the values it has just read plus yours. A cell of that row that held a formula is written back as its displayed value. - Values are typed in. Excel reads dates and numbers according to the cell format, as if typed by hand.
- Range size. For
range.write, give an address with the same number of rows and columns as the block of values; Excel refuses a mismatch (microsoft.rejected). - Missing fields. No workbook, worksheet or table, or an empty Columns to write, Values, Address, Matching column, Value to match or Text to append fails with
node_invalid_param, naming the field. On SharePoint, a workbook without a document library givesmicrosoft.rejected. - Test runs. In test runs reads run for real (worksheets, tables, rows, ranges, cells). Writes are only described:
table.addreports the row as added without checking for duplicates,table.updateandtable.deletereportfound: truewithindex: -1, andcell.appendreally reads the cell and returns the content it would have. - Errors.
credential.capability_missing: the capability matching Where the workbook lives (SharePoint or Files) is not connected for the member running the workflow.microsoft.locked: the workbook is locked by another editor; retried automatically.microsoft.access_denied: reconnect the account or check rights on the site.microsoft.not_found: the workbook, worksheet or table does not exist.microsoft.unavailableis retried automatically. See Error handling.