Pipelines

Pipelines are custom automated workflows that operate on local Excel or spreadsheet files on your machine. They are designed to automate repetitive tasks, such as data cleaning, transformation, transfer and reporting. Each pipeline consists of a trigger and a series of actions that insert, modify or delete cells, worksheets or entire workbooks.

Pipelines are defined in a JSON format. The pipelines are stored in a dedicated folder, named "Pipelines", within the same directory as the XLSXPipeline executable.

XLSXPipeline.exe
Pipelines/
├── CleanReport.json
├── TransferSalesData.json
├── ApplyAnalytics.json
└── UpdateLeads.json

Example

{
    "pipelineName": "Generate Monthly Sales Summary",
    "trigger": {
        "type": "OnChange",
        "path": "C:\\Sales\\Monthly\\SalesData.xlsx"
    },
    "actions": [
        {
            "type": "CopySheet",
            "sourceSheetName": "Template",
            "newSheetName": "Summary"
        },
        {
            "type": "SetCellValue",
            "sheetName": "Summary",
            "cellAddress": "A1",
            "value": "Monthly Summary - {month} {year}"
        },
        {
            "type": "ApplyFormula",
            "sheetName": "Summary",
            "cellAddress": "B2",
            "formula": "=SUM(Sales!B2:D2)"
        },
        {
            "type": "CopyFile",
            "destinationPath": "C:\\Sales\\Summaries\\",
            "fileName": "Summary_{month}_{year}.xlsx"
        }
    ]
}

Triggers

Trigger Description
Once

Triggers once, as soon as the XLSXPipeline service starts.

Takes an optional file path that will be used as the file path for any relevant actions that do not provide a file path.

{
  "type": "Once",
  "path": "C:\Sales\Monthly\SalesData.xlsx"
}
Cron Expressions

Triggers on a scheduled basis determined by a cron expression.

Takes an optional file path that will be used as the file path for any relevant actions that do not provide a file path.

{
  "type": "30 9,17 * * *",
  "path": "C:\Sales\Monthly\SalesData.xlsx"
}
Natural Language

Triggers on a scheduled basis determined by a simple natural language option.

Examples: 'Every 5 minutes', 'Every 2 hours', 'Every day', 'Every week', 'At 6:15pm'.

To be used as a simpler alternative to cron expressions, although cron expressions are preferred.

Takes an optional file path that will be used as the file path for any relevant actions that do not provide a file path.

{
  "type": "Every day",
  "path": "C:\Sales\Monthly\SalesData.xlsx"
}
OnChange

Triggers when a file is updated or if contents of the directory are changed.

Requires a path to a file or directory that will be watched for any changes.

{
  "type": "OnChange",
  "path": "C:\Sales\Monthly\SalesData.xlsx"
}
OnNewFile

Triggers when a new file is created in the directory.

Requires a path to a directory that will be watched for any new files.

{
  "type": "OnNewFile",
  "path": "C:\Sales\Monthly\"
}

Actions

Action Description

File

CreateFile

Creates a new file at the specified destination.

destinationPath (optional) — directory or full path for the new file.
fileName (optional) — file name if not included in destinationPath.
content (optional) — text content to write; omit to create an empty file.
overwriteIfExists (optional, default true) — overwrite if already exists.

{
  "type": "CreateFile",
  "destinationPath": "C:\Sales\Monthly\",
  "fileName": "SalesData.xlsx"
}
DeleteFile

Deletes the pipeline's current file or an explicitly specified file.

ignoreIfNotExists (optional, default true) — silently skip if the file does not exist.
backupDirectory (optional) — copy the file here before deleting.

{
  "type": "DeleteFile"
}
CopyFile

Makes a copy of a file to the given destination.

destinationPath (required) — directory or full file path for the copy.
fileName (optional) — override name for the copied file; supports date placeholders.
overwriteIfExists (optional, default true) — overwrite if a file already exists at the destination.

{
  "type": "CopyFile",
  "destinationPath": "C:\Sales\Summaries\",
  "fileName": "SalesData_{month}_{year}.xlsx"
}
MoveFile

Moves a file to a new location, optionally renaming it.

destinationPath (required) — directory or full file path to move to.
fileName (optional) — new name at the destination; supports date placeholders.
overwriteIfExists (optional, default false) — overwrite an existing file at the destination.

{
  "type": "MoveFile",
  "destinationPath": "C:\Sales\Archive\"
}
RenameFile

Renames the current file in place.

newName (required) — new file name or full destination path; supports date placeholders.

{
  "type": "RenameFile",
  "newName": "SalesData_{year}.xlsx"
}
ImportCSV

Imports data from a CSV file into a worksheet, starting at a given cell.

csvFilePath (required) — path to the source CSV file; supports date placeholders.
sheetName (optional) — destination sheet; defaults to the first sheet.
startCell (optional, default "A1") — top-left cell where data is written.
delimiter (optional, default ",") — column separator.
clearExistingData (optional, default false) — clear the destination area before import.

{
  "type": "ImportCSV",
  "csvFilePath": "C:\Sales\Monthly\export.csv",
  "sheetName": "Sheet1",
  "startCell": "A1"
}
SplitSheetsToFiles

Saves each visible sheet as its own separate .xlsx file in the given directory.

outputDirectory (required) — folder where the per-sheet files will be written.
fileNamePrefix (optional) — prefix prepended to each sheet name when naming the output file.
createDirectories (optional, default true) — create the output folder if it does not exist.

{
  "type": "SplitSheetsToFiles",
  "outputDirectory": "C:\Sales\Sheets\"
}
ProtectFile

Password-protects the workbook (structure protection).

password (required) — password to apply.

{
  "type": "ProtectFile",
  "password": "mysecretpassword"
}
UnprotectFile

Removes workbook-level password protection.

password (required) — existing password to unlock the workbook.

{
  "type": "UnprotectFile",
  "password": "mysecretpassword"
}
ExportToCSV

Exports a worksheet to a CSV file.

outputPath (optional) — directory or full path for the CSV output.
fileName (optional) — override file name; supports date placeholders.
sheetName (optional) — sheet to export; defaults to the first sheet.
delimiter (optional, default ",") — column separator.
includeHeaders (optional, default true) — include the header row.

{
  "type": "ExportToCSV",
  "outputPath": "C:\Sales\Monthly\",
  "fileName": "SalesData_{month}.csv"
}
ExportToPDF

Exports a worksheet to a PDF file.

outputPath (optional) — directory or full path for the PDF output.
fileName (optional) — override file name; supports date placeholders.
sheetName (optional) — sheet to export; defaults to the first sheet.
paperSize (optional, default "A4") — paper size (e.g. "A4", "Letter").
orientation (optional, default "Portrait") — "Portrait" or "Landscape".

{
  "type": "ExportToPDF",
  "outputPath": "C:\Sales\Reports\",
  "fileName": "SalesData_{month}.pdf",
  "orientation": "Landscape"
}
OpenFile

Opens the file using the default system application for that file type.

No additional properties are required.

{
  "type": "OpenFile"
}

Worksheet

AddSheet

Adds a new blank worksheet to the workbook.

sheetName (optional) — name for the new sheet; defaults to the next available "SheetN" name.

{
  "type": "AddSheet",
  "sheetName": "Summary"
}
CopySheet

Copies a worksheet, optionally into a different workbook.

sourceSheetName (optional) — sheet to copy; defaults to the first sheet.
newSheetName (optional) — name for the copied sheet.
targetFilePath (optional) — copy into a different workbook instead of the current one.

{
  "type": "CopySheet",
  "sourceSheetName": "Template",
  "newSheetName": "Sheet1"
}
DeleteSheet

Permanently deletes a worksheet from the workbook.

sheetName (optional) — sheet to delete; defaults to the first sheet.

{
  "type": "DeleteSheet",
  "sheetName": "Sheet1"
}
DeleteHiddenSheets

Deletes all hidden and very-hidden sheets in the workbook. Takes no additional properties.

{
  "type": "DeleteHiddenSheets"
}
RenameSheet

Renames an existing worksheet.

sheetName (optional) — current sheet name; defaults to the first sheet.
newSheetName (required) — new name for the sheet; supports date placeholders.

{
  "type": "RenameSheet",
  "sheetName": "Sheet1",
  "newSheetName": "Sales_{month}_{year}"
}
MoveSheet

Moves a worksheet to a different tab position, or into a different workbook.

sheetName (optional) — sheet to move; defaults to the first sheet.
targetIndex (optional, default 1) — 1-based tab position to move the sheet to.
targetFilePath (optional) — move the sheet into a different workbook.

{
  "type": "MoveSheet",
  "sheetName": "Summary",
  "targetIndex": 1
}
ReplaceSheet

Replaces the contents of one sheet with a copy of another sheet, preserving the target sheet's position.

targetSheetName (optional) — sheet to be replaced; defaults to the first sheet.
sourceSheetName (optional) — sheet to copy from within the same workbook.
sourceFilePath (optional) — copy the replacement sheet from a different workbook.

{
  "type": "ReplaceSheet",
  "targetSheetName": "Report",
  "sourceSheetName": "Template"
}
ProtectSheet

Applies password protection to a worksheet.

sheetName (optional) — sheet to protect; defaults to the first sheet.
password (required) — password to lock the sheet.

{
  "type": "ProtectSheet",
  "sheetName": "Sheet1",
  "password": "sheetpassword"
}
UnprotectSheet

Removes password protection from a worksheet.

sheetName (optional) — sheet to unprotect; defaults to the first sheet.
password (required) — current password of the protected sheet.

{
  "type": "UnprotectSheet",
  "sheetName": "Sheet1",
  "password": "sheetpassword"
}
HideSheet

Hides a worksheet from the tab bar.

sheetName (optional) — sheet to hide; defaults to the first sheet.
veryHidden (optional, default false) — when true, the sheet cannot be unhidden via the Excel UI.

{
  "type": "HideSheet",
  "sheetName": "RawData"
}
UnhideSheet

Makes a hidden or very-hidden worksheet visible again.

sheetName (required) — exact name of the sheet to unhide.

{
  "type": "UnhideSheet",
  "sheetName": "RawData"
}
FreezePane

Freezes a number of rows and/or columns from the top-left of the sheet.

sheetName (optional) — sheet to freeze; defaults to the first sheet.
rows (optional, default 0) — number of rows to freeze from the top.
columns (optional, default 0) — number of columns to freeze from the left.

{
  "type": "FreezePane",
  "sheetName": "Sheet1",
  "rows": 1
}
SetSheetTabColor

Sets the colour of a sheet's tab in the workbook.

sheetName (optional) — sheet to recolor; defaults to the first sheet.
color (optional) — hex string (e.g. "#FF0000") or named color (e.g. "Red"); omit or leave empty to reset.

{
  "type": "SetSheetTabColor",
  "sheetName": "Sheet1",
  "color": "#4CAF50"
}
SetPrintArea

Defines (or clears) the print area for a worksheet.

sheetName (optional) — sheet to configure; defaults to the first sheet.
range (optional) — cell range to set as the print area, e.g. "A1:H50"; omit to clear the print area.

{
  "type": "SetPrintArea",
  "sheetName": "Sheet1",
  "range": "A1:H50"
}
SetPageOrientation

Sets the print page orientation for a worksheet.

sheetName (optional) — sheet to configure; defaults to the first sheet.
orientation (required) — "Portrait" or "Landscape".

{
  "type": "SetPageOrientation",
  "sheetName": "Sheet1",
  "orientation": "Landscape"
}
SetPageMargins

Sets the print page margins for a worksheet (in inches).

sheetName (optional) — sheet to configure; defaults to the first sheet.
left, right, top, bottom, header, footer (all optional) — margin values in inches; omit any to leave unchanged.

{
  "type": "SetPageMargins",
  "sheetName": "Sheet1",
  "top": 1.0,
  "bottom": 1.0,
  "left": 0.75,
  "right": 0.75
}
SetHeaderFooter

Sets the printed header and/or footer text sections for a worksheet.

sheetName (optional) — sheet to configure; defaults to the first sheet.
leftHeader, centerHeader, rightHeader (all optional) — header section text.
leftFooter, centerFooter, rightFooter (all optional) — footer section text.

{
  "type": "SetHeaderFooter",
  "sheetName": "Sheet1",
  "centerHeader": "Monthly Sales Report",
  "centerFooter": "Page &P of &N"
}
AddNamedRange

Defines a named range in the workbook or worksheet scope.

name (required) — name for the range.
range (required) — cell range to name, e.g. "A1:D10".
sheetName (optional) — sheet where the range resides; defaults to the first sheet.
scope (optional, default "Workbook") — "Workbook" or "Worksheet".

{
  "type": "AddNamedRange",
  "sheetName": "Sheet1",
  "name": "SalesData",
  "range": "A1:D100"
}
SetZoom

Sets the zoom level of a worksheet view.

sheetName (optional) — sheet to zoom; defaults to the first sheet.
zoomScale (required) — zoom percentage between 10 and 400.

{
  "type": "SetZoom",
  "sheetName": "Sheet1",
  "zoomScale": 75
}

Data

InsertRow

Inserts one or more blank rows above the specified row number, shifting existing rows down.

sheetName (optional) — sheet to modify; defaults to the first sheet.
rowNumber (required) — 1-based row number above which the new rows are inserted.
count (optional, default 1) — number of rows to insert.

{
  "type": "InsertRow",
  "sheetName": "Sheet1",
  "rowNumber": 2,
  "count": 1
}
DeleteRow

Deletes one or more rows, shifting subsequent rows up.

sheetName (optional) — sheet to modify; defaults to the first sheet.
rowNumber (required) — 1-based row number to start deleting from.
count (optional, default 1) — number of rows to delete.

{
  "type": "DeleteRow",
  "sheetName": "Sheet1",
  "rowNumber": 5,
  "count": 2
}
CopyRow

Copies one or more rows to another position within the same workbook, optionally inserting new rows at the destination.

sheetName (optional) — source sheet; defaults to the first sheet.
sourceRow (required) — 1-based row number to copy from.
destinationRow (required) — 1-based row number to copy to.
count (optional, default 1) — number of rows to copy.
destinationSheetName (optional) — copy to a different sheet in the same workbook.
insertRows (optional, default false) — insert new rows at the destination instead of overwriting.

{
  "type": "CopyRow",
  "sheetName": "Sheet1",
  "sourceRow": 2,
  "destinationRow": 10
}
MoveRow

Moves one or more rows to a different position in the sheet.

sheetName (optional) — sheet to modify; defaults to the first sheet.
from (required) — 1-based starting row number to move.
to (required) — 1-based destination row number.
count (optional, default 1) — number of consecutive rows to move.

{
  "type": "MoveRow",
  "sheetName": "Sheet1",
  "from": 5,
  "to": 2
}
InsertColumn

Inserts one or more blank columns before the specified column, shifting existing columns right.

sheetName (optional) — sheet to modify; defaults to the first sheet.
columnName (required) — column letter or 1-based number before which columns are inserted.
count (optional, default 1) — number of columns to insert.

{
  "type": "InsertColumn",
  "sheetName": "Sheet1",
  "columnName": "C"
}
DeleteColumn

Deletes one or more columns, shifting subsequent columns left.

sheetName (optional) — sheet to modify; defaults to the first sheet.
columnName (required) — column letter or 1-based number to start deleting from.
count (optional, default 1) — number of columns to delete.

{
  "type": "DeleteColumn",
  "sheetName": "Sheet1",
  "columnName": "D",
  "count": 2
}
CopyColumn

Copies one or more columns to another position, optionally into a different sheet or workbook.

sheetName (optional) — source sheet; defaults to the first sheet.
from (required) — source column letter or number.
to (required) — destination column letter or number.
count (optional, default 1) — number of consecutive columns to copy.
targetSheetName (optional) — copy to a different sheet in the same workbook.
targetFilePath (optional) — copy to a different workbook.
insertColumns (optional, default false) — insert new columns at the destination instead of overwriting.

{
  "type": "CopyColumn",
  "sheetName": "Sheet1",
  "from": "A",
  "to": "F"
}
MoveColumn

Moves a column to a different position in the sheet.

sheetName (optional) — sheet to modify; defaults to the first sheet.
from (required) — source column letter or number.
to (required) — destination column letter or number.

{
  "type": "MoveColumn",
  "sheetName": "Sheet1",
  "from": "E",
  "to": "B"
}
SortData

Sorts a range of rows by the values in a specified column.

sheetName (optional) — sheet to sort; defaults to the first sheet.
range (required) — cell range containing the data to sort, e.g. "A1:D100".
sortColumn (required) — column letter or number to sort by.
ascending (optional, default true) — sort direction.

{
  "type": "SortData",
  "sheetName": "Sheet1",
  "range": "A1:D100",
  "sortColumn": "B",
  "ascending": false
}
FilterData

Applies an auto-filter to a range, showing only rows that match the given criteria.

sheetName (optional) — sheet to filter; defaults to the first sheet.
range (required) — cell range to apply the filter to.
filterColumnIndex (required) — 1-based column index within the range to filter on.
filterValue (required) — value to match.
filterOperator (optional, default "Equal") — comparison operator: Equal, NotEqual, Contains, StartsWith, EndsWith, GreaterThan, LessThan.

{
  "type": "FilterData",
  "sheetName": "Sheet1",
  "range": "A1:D100",
  "filterColumnIndex": 2,
  "filterValue": "North",
  "filterOperator": "Equal"
}
MergeData

Appends data from a source workbook sheet into a destination sheet, starting at a specified cell.

sourceFilePath (required) — path to the source workbook to merge data from.
sourceSheetName (optional) — source sheet; defaults to the first sheet.
destinationSheetName (optional) — destination sheet; defaults to the first sheet.
destinationCell (optional, default "A1") — top-left cell where merged data starts.
includeHeaders (optional, default true) — include the source header row.

{
  "type": "MergeData",
  "sourceFilePath": "C:\Sales\Monthly\SalesData.xlsx",
  "sourceSheetName": "Sheet1",
  "destinationSheetName": "Sheet1",
  "destinationCell": "A1"
}
DeduplicateRows

Removes duplicate rows from a worksheet, keeping the first or last occurrence.

sheetName (optional) — sheet to deduplicate; defaults to the first sheet.
columns (optional) — list of column letters to compare, e.g. ["A","C"]; omit to compare all used columns.
hasHeaders (optional, default true) — treat the first row as a header that is never removed.
keepFirst (optional, default true) — keep the first occurrence of each duplicate group.

{
  "type": "DeduplicateRows",
  "sheetName": "Sheet1",
  "columns": ["A", "B"]
}
GroupRows

Groups a range of rows so they can be collapsed in Excel.

sheetName (optional) — sheet to modify; defaults to the first sheet.
fromRow (required) — 1-based first row of the group.
toRow (required) — 1-based last row of the group.
collapse (optional, default false) — collapse the group immediately after grouping.

{
  "type": "GroupRows",
  "sheetName": "Sheet1",
  "fromRow": 2,
  "toRow": 10
}
UngroupRows

Removes grouping from a range of rows.

sheetName (optional) — sheet to modify; defaults to the first sheet.
fromRow (required) — 1-based first row of the group to remove.
toRow (required) — 1-based last row of the group to remove.

{
  "type": "UngroupRows",
  "sheetName": "Sheet1",
  "fromRow": 2,
  "toRow": 10
}
GroupColumns

Groups a range of columns so they can be collapsed in Excel.

sheetName (optional) — sheet to modify; defaults to the first sheet.
fromColumn (required) — first column of the group (letter or number).
toColumn (required) — last column of the group (letter or number).
collapse (optional, default false) — collapse the group immediately after grouping.

{
  "type": "GroupColumns",
  "sheetName": "Sheet1",
  "fromColumn": "C",
  "toColumn": "F"
}
UngroupColumns

Removes grouping from a range of columns.

sheetName (optional) — sheet to modify; defaults to the first sheet.
fromColumn (required) — first column of the group to remove (letter or number).
toColumn (required) — last column of the group to remove (letter or number).

{
  "type": "UngroupColumns",
  "sheetName": "Sheet1",
  "fromColumn": "C",
  "toColumn": "F"
}

Formatting

FormatCells

Applies font, number format, and fill colour formatting to a cell range.

sheetName (optional) — sheet to format; defaults to the first sheet.
range (required) — cell range to format, e.g. "A1:D10".
numberFormat (optional) — Excel number format string, e.g. "#,##0.00".
fontName (optional) — font family name.
fontSize (optional) — font size in points.
bold (optional) — apply bold.
italic (optional) — apply italic.
fontColor (optional) — named color (e.g. "Red") for the font.
backgroundColor (optional) — named color for the cell fill.

{
  "type": "FormatCells",
  "sheetName": "Sheet1",
  "range": "A1:D1",
  "bold": true,
  "backgroundColor": "LightBlue"
}
AutoFitColumns

Automatically adjusts column widths to fit their content.

sheetName (optional) — sheet to auto-fit; defaults to the first sheet.
from (optional) — first column to fit (letter or number); defaults to the first used column.
to (optional) — last column to fit (letter or number); defaults to the last used column.
minWidth (optional) — minimum width after fitting.
maxWidth (optional) — maximum width after fitting.

{
  "type": "AutoFitColumns",
  "sheetName": "Sheet1",
  "maxWidth": 50
}
SetColumnWidth

Sets an explicit width for one or more consecutive columns.

sheetName (optional) — sheet to modify; defaults to the first sheet.
column (required) — starting column letter or 1-based number.
width (required) — column width in Excel character units.
count (optional, default 1) — number of consecutive columns to set.

{
  "type": "SetColumnWidth",
  "sheetName": "Sheet1",
  "column": "A",
  "width": 20
}
SetRowHeight

Sets an explicit height for one or more consecutive rows.

sheetName (optional) — sheet to modify; defaults to the first sheet.
row (required) — 1-based starting row number.
height (required) — row height in points.
count (optional, default 1) — number of consecutive rows to set.

{
  "type": "SetRowHeight",
  "sheetName": "Sheet1",
  "row": 1,
  "height": 30
}
ConditionalFormatting

Applies a conditional formatting rule to a cell range.

sheetName (optional) — sheet to format; defaults to the first sheet.
range (required) — cell range to apply the rule to.
condition (required) — condition type: GreaterThan, LessThan, Equal, Between, Contains, IsBlank, IsDuplicate, IsTop, ColorScale, DataBar, and more.
value (optional) — comparison value (required for most condition types).
value2 (optional) — second value for Between / NotBetween.
backgroundColor (optional) — fill color as hex or named color.
fontColor (optional) — font color as hex or named color.
bold / italic (optional) — apply bold or italic to matching cells.

{
  "type": "ConditionalFormatting",
  "sheetName": "Sheet1",
  "range": "B2:B100",
  "condition": "GreaterThan",
  "value": "1000",
  "backgroundColor": "#C6EFCE",
  "fontColor": "#276221"
}

Cells

SetCellValue

Writes a value to a specific cell, overwriting any existing content or formula.

sheetName (optional) — sheet to modify; defaults to the first sheet.
cellAddress (required) — cell address, e.g. "B5".
value (required) — value to write; supports date placeholders. Pass an empty string to clear the cell.

{
  "type": "SetCellValue",
  "sheetName": "Sheet1",
  "cellAddress": "A1",
  "value": "Report generated: {day}/{month}/{year}"
}
ApplyFormula

Sets an Excel formula on a specific cell.

sheetName (optional) — sheet to modify; defaults to the first sheet.
cellAddress (required) — cell address, e.g. "C10".
formula (required) — formula string starting with =, e.g. "=SUM(C2:C9)".

{
  "type": "ApplyFormula",
  "sheetName": "Sheet1",
  "cellAddress": "C10",
  "formula": "=SUM(C2:C9)"
}
ClearCells

Clears values, formatting, or both from a cell range.

sheetName (optional) — sheet to modify; defaults to the first sheet.
range (required) — cell range to clear, e.g. "A1:D10".
clearType (optional, default "All") — what to clear: Values (values/formulas only), Formats (formatting only), or All.

{
  "type": "ClearCells",
  "sheetName": "Sheet1",
  "range": "A2:D100",
  "clearType": "Values"
}
FindAndReplace

Finds text in cells and replaces it with another value, supporting substring and whole-cell matching.

sheetName (optional) — sheet to search; defaults to the first sheet.
find (required) — text to search for.
replace (required) — replacement text; use an empty string to delete matched text.
matchCase (optional, default false) — case-sensitive search.
matchEntireCell (optional, default false) — match only cells whose entire value equals find.
searchRange (optional) — limit the search to a specific range, e.g. "A1:D100".

{
  "type": "FindAndReplace",
  "sheetName": "Sheet1",
  "find": "N/A",
  "replace": ""
}
MergeCells

Merges a range of cells into a single cell.

sheetName (optional) — sheet to modify; defaults to the first sheet.
range (required) — cell range to merge, e.g. "A1:D1".

{
  "type": "MergeCells",
  "sheetName": "Sheet1",
  "range": "A1:D1"
}
UnmergeCells

Unmerges a previously merged cell range.

sheetName (optional) — sheet to modify; defaults to the first sheet.
range (required) — cell range to unmerge, e.g. "A1:D1".

{
  "type": "UnmergeCells",
  "sheetName": "Sheet1",
  "range": "A1:D1"
}
CopyRange

Copies a cell range to a new location within the same workbook.

sheetName (optional) — source sheet; defaults to the first sheet.
sourceRange (required) — range to copy, e.g. "A1:D10".
destinationCell (required) — top-left cell of the destination, e.g. "F1".
destinationSheet (optional) — paste into a different sheet in the same workbook.

{
  "type": "CopyRange",
  "sheetName": "Sheet1",
  "sourceRange": "A1:D10",
  "destinationCell": "A1",
  "destinationSheet": "Archive"
}
AddHyperlink

Attaches a hyperlink to a cell.

sheetName (optional) — sheet to modify; defaults to the first sheet.
cell (required) — cell address to attach the hyperlink to, e.g. "B2".
url (required) — URL for the hyperlink.
tooltip (optional) — tooltip text shown on hover.

{
  "type": "AddHyperlink",
  "sheetName": "Sheet1",
  "cell": "A1",
  "url": "https://example.com/report",
  "tooltip": "Open report"
}
ValidateData

Applies a data validation rule to a cell range, restricting input to a list, whole number range, or decimal range.

sheetName (optional) — sheet to modify; defaults to the first sheet.
range (required) — cell range to apply validation to.
validationType (optional, default "List") — List, Whole, or Decimal.
validationCriteria (required) — for List: comma-separated values; for Whole/Decimal: "min,max".
errorMessage (optional) — message shown when invalid data is entered.

{
  "type": "ValidateData",
  "sheetName": "Sheet1",
  "range": "C2:C100",
  "validationType": "List",
  "validationCriteria": "North,South,East,West"
}

Advanced

CreatePivotTable

Creates a pivot table from a source data range and places it on a destination sheet.

sourceSheetName (optional) — sheet containing the source data; defaults to the first sheet.
sourceRange (required) — range of source data including headers, e.g. "A1:D200".
destinationSheetName (required) — sheet where the pivot table will be placed (created if it does not exist).
destinationCell (required) — top-left cell for the pivot table, e.g. "A1".
rowFields (optional) — list of column header names to use as row labels.
columnFields (optional) — list of column header names to use as column labels.
dataFields (optional) — list of column header names to aggregate as values.

{
  "type": "CreatePivotTable",
  "sourceSheetName": "Sheet1",
  "sourceRange": "A1:D200",
  "destinationSheetName": "Pivot",
  "destinationCell": "A1",
  "rowFields": ["Region"],
  "dataFields": ["Revenue"]
}
Transpose

Transposes a source range (swapping rows and columns) and writes the result to a destination cell.

sourceSheetName (optional) — sheet containing the source data; defaults to the first sheet.
sourceRange (required) — range to transpose, e.g. "A1:D10".
destinationSheetName (required) — sheet to write the transposed data to (created if it does not exist).
destinationCell (required) — top-left cell for the transposed output.

{
  "type": "Transpose",
  "sourceSheetName": "Sheet1",
  "sourceRange": "A1:D10",
  "destinationSheetName": "Transposed",
  "destinationCell": "A1"
}

Time

Wait

Pauses pipeline execution for a given number of seconds before proceeding to the next action.

timeInSeconds (required) — number of seconds to wait; must be non-negative.

{
  "type": "Wait",
  "timeInSeconds": 30
}