Cross-Provider Workflow

Notion Page to Google Sheets Row

Version 1.0.0

Create a Notion page, then append a tracking row to a Google Sheet.

1 workflow 2 source APIs 2 providers
View Spec View on GitHub ArazzoWorkflowsCross-Provider

Providers Orchestrated

notion google-sheets

Workflows

page-to-sheet-row
Create a Notion page, then append its details to a Google Sheet.
Creates a Notion page in a parent database and appends a row to a Google Sheet using the new page id and url for a spreadsheet-based index.
2 steps inputs: parentDatabaseId, range, spreadsheetId, title outputs: pageId, pageUrl, updatedRange
1
create-page
$sourceDescriptions.notionApi.createPage
Create a Notion page in the target database.
2
append-row
$sourceDescriptions.googleSheetsApi.appendValues
Append a tracking row to the Google Sheet.

Source API Descriptions

Arazzo Workflow Specification

prod-notion-page-to-sheet-row-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Notion Page to Google Sheets Row
  summary: Create a Notion page, then append a tracking row to a Google Sheet.
  description: >-
    A productivity and internal-ops workflow that creates a Notion page to
    capture a new document or record and appends a corresponding row to a Google
    Sheet so the item is reflected in a spreadsheet-based tracker. Demonstrates
    chaining a knowledge-base provider and a spreadsheet provider in a single
    Arazzo workflow.
  version: 1.0.0
sourceDescriptions:
  - name: notionApi
    url: https://raw.githubusercontent.com/api-evangelist/notion/refs/heads/main/openapi/notion-openapi.yml
    type: openapi
  - name: googleSheetsApi
    url: https://raw.githubusercontent.com/api-evangelist/google-sheets/refs/heads/main/openapi/google-sheets-openapi.yml
    type: openapi
workflows:
  - workflowId: page-to-sheet-row
    summary: Create a Notion page, then append its details to a Google Sheet.
    description: >-
      Creates a Notion page in a parent database and appends a row to a Google
      Sheet using the new page id and url for a spreadsheet-based index.
    inputs:
      type: object
      properties:
        parentDatabaseId:
          type: string
        title:
          type: string
        spreadsheetId:
          type: string
        range:
          type: string
    steps:
      - stepId: create-page
        description: Create a Notion page in the target database.
        operationId: $sourceDescriptions.notionApi.createPage
        requestBody:
          contentType: application/json
          payload:
            parent:
              database_id: $inputs.parentDatabaseId
            properties:
              title:
                title:
                  - text:
                      content: $inputs.title
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          pageId: $response.body#/id
          pageUrl: $response.body#/url
      - stepId: append-row
        description: Append a tracking row to the Google Sheet.
        operationId: $sourceDescriptions.googleSheetsApi.appendValues
        parameters:
          - name: spreadsheetId
            in: path
            value: $inputs.spreadsheetId
          - name: range
            in: path
            value: $inputs.range
          - name: valueInputOption
            in: query
            value: USER_ENTERED
        requestBody:
          contentType: application/json
          payload:
            values:
              - - $inputs.title
                - $steps.create-page.outputs.pageId
                - $steps.create-page.outputs.pageUrl
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          updatedRange: $response.body#/updates/updatedRange
    outputs:
      pageId: $steps.create-page.outputs.pageId
      pageUrl: $steps.create-page.outputs.pageUrl
      updatedRange: $steps.append-row.outputs.updatedRange