SheetModifiedTriggerSheetModifiedTrigger
SheetModifiedTriggerCertified

yaml
type: "io.kestra.plugin.googleworkspace.sheets.SheetModifiedTrigger"
yaml
id: monitor_spreadsheet
namespace: company.team

tasks:
  - id: log_changes
    type: io.kestra.plugin.core.log.Log
    message: |
      {% if trigger.count > 0 %}
      Spreadsheet '{{ trigger.modifications[0].spreadsheetTitle }}' was modified by {{ trigger.modifications[0].lastModifyingUser }}.
      Detected {{ trigger.count }} modification(s).
      {% else %}
      No modifications detected in spreadsheet.
      {% endif %}

triggers:
  - id: watch_sheet
    type: io.kestra.plugin.googleworkspace.sheets.SheetModifiedTrigger
    interval: PT5M
    spreadsheetId: "1U4AoiUrqiVaSIVcm_TwDc9RoKOdCULNGWxuC1vmDT_A"
    serviceAccount: "{{ secret('GCP_SERVICE_ACCOUNT_JSON') }}"

yaml
id: monitor_orders_sheet
namespace: company.team

tasks:
  - id: process_changes
    type: io.kestra.plugin.core.debug.Return
    format: |
      {% if trigger.count > 0 %}
      Changes detected in sheet:
      - Modified at: {{ trigger.modifications[0].modifiedTime }}
      - Modified by: {{ trigger.modifications[0].lastModifyingUser }}
      - Revision ID: {{ trigger.modifications[0].revisionId }}
      {% else %}
      No modifications detected in Orders sheet.
      {% endif %}

triggers:
  - id: watch_orders
    type: io.kestra.plugin.googleworkspace.sheets.SheetModifiedTrigger
    interval: PT2M
    spreadsheetId: "1U4AoiUrqiVaSIVcm_TwDc9RoKOdCULNGWxuC1vmDT_A"
    serviceAccount: "{{ secret('GCP_SERVICE_ACCOUNT_JSON') }}"
    sheetName: "Orders"
    includeDetails: true

yaml
id: track_new_revisions
namespace: company.team

tasks:
  - id: notify
    type: io.kestra.plugin.notifications.slack.SlackIncomingWebhook
    url: "{{ secret('SLACK_WEBHOOK') }}"
    payload: |
      {
        "text": "{% if trigger.count > 0 %}Spreadsheet '{{ trigger.modifications[0].spreadsheetTitle }}' was modified by {{ trigger.modifications[0].lastModifyingUser }}{% else %}No changes detected{% endif %}"
      }

triggers:
  - id: watch
    type: io.kestra.plugin.googleworkspace.sheets.SheetModifiedTrigger
    interval: PT1M
    spreadsheetId: "{{ vars.spreadsheet_id }}"
    serviceAccount: "{{ secret('GCP_SERVICE_ACCOUNT_JSON') }}"
    on: CREATE
    includeDetails: true
Properties
Defaultfalse
Definitions
type*Requiredobject
afterstring
Formatdate-time
beforestring
Formatdate-time
datestring
Default{{ trigger.date }}
dayOfWeek*Requiredstring
Possible Values
MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY
type*Requiredobject
datestring
Default{{ trigger.date }}
dayInMonth*Requiredstring
Possible Values
FIRSTLASTSECONDTHIRDFOURTH
dayOfWeek*Requiredstring
Possible Values
MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY
type*Requiredobject
datestring
Default{{ trigger.date }}
flowId*Requiredstring
namespace*Requiredstring
type*Requiredobject
labels*Requiredarrayobject
type*Requiredobject
namespace*Requiredstring
type*Requiredobject
comparisonstring
Possible Values
EQUALSPREFIXSUFFIX
prefixbooleanstring
Defaultfalse
expression*Requiredbooleanstring
type*Requiredobject
type*Requiredobject
inarray
SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED
notInarray
SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED
expression*Requiredstring
type*Requiredobject
flowId*Requiredstring
namespace*Requiredstring
type*Requiredobject
namespace*Requiredstring
type*Requiredobject
prefixboolean
Defaultfalse
type*Requiredobject
inarray
SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED
notInarray
SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED
conditions*Requiredobject
id*Requiredstring
Validation RegExp^[a-zA-Z0-9][a-zA-Z0-9_-]*
Min length1
type*Requiredobject
resetOnSuccessboolean
Defaulttrue
timeWindow
Default{ "type": "DURATION_WINDOW" }
deadlinestring
Formatpartial-time
endTimestring
Formatpartial-time
startTimestring
Formatpartial-time
typestring
DefaultDURATION_WINDOW
Possible Values
DAILY_TIME_DEADLINEDAILY_TIME_WINDOWDURATION_WINDOWSLIDING_WINDOW
windowstring
Formatduration
windowAdvancestring
Formatduration
windowDeprecatedstring
Formatduration
windowAdvanceDeprecatedstring
Formatduration
conditions*Required
Min items1
type*Requiredobject
conditions*Required
Min items1
type*Requiredobject
type*Requiredobject
countrystring
datestring
Default{{ trigger.date}}
subDivisionstring
type*Requiredobject
afterstring
Formattime
beforestring
Formattime
datestring
Default{{ trigger.date }}
type*Requiredobject
datestring
Default{{ trigger.date }}
Defaultfalse
DefaultPT5M
Formatduration
DefaultCREATE_OR_UPDATE
Possible Values
CREATEUPDATECREATE_OR_UPDATE
SubTypestring
Default["https://www.googleapis.com/auth/spreadsheets.readonly","https://www.googleapis.com/auth/drive.metadata.readonly"]
Formatduration
SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED
Definitions
changeDetails
affectedRangestring
columnCountinteger
hasDataboolean
rowCountinteger
lastModifyingUserstring
modifiedTimestring
Formatdate-time
revisionIdstring
sheetNamestring
spreadsheetIdstring
spreadsheetTitlestring

Create automations with Googleworkspace Sheets SheetModifiedTrigger