1"use strict";(globalThis.webpackChunkflowera_docs=globalThis.webpackChunkflowera_docs||[]).push([[2060],{9835(e,t,s){s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>d,default:()=>c,frontMatter:()=>l,metadata:()=>n,toc:()=>a});const n=JSON.parse('{"id":"agentflow/nodes/tools/google-sheets","title":"Google Sheets Tool","description":"The Google Sheets tool lets your flow read and write spreadsheet data \u2014 append a row of captured","source":"@site/docs/agentflow/nodes/tools/google-sheets.md","sourceDirName":"agentflow/nodes/tools","slug":"/agentflow/nodes/tools/google-sheets","permalink":"/docs/agentflow/nodes/tools/google-sheets","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":9,"frontMatter":{"title":"Google Sheets Tool","sidebar_label":"Google Sheets","sidebar_position":9},"sidebar":"agentflowSidebar","previous":{"title":"MCP","permalink":"/docs/agentflow/nodes/tools/mcp"},"next":{"title":"JSON Path Extractor","permalink":"/docs/agentflow/nodes/tools/json-path-extractor"}}');var o=s(5723),r=s(4315);const l={title:"Google Sheets Tool",sidebar_label:"Google Sheets",sidebar_position:9},d="Google Sheets Tool",i={},a=[{value:"Adding it to a flow",id:"adding-it-to-a-flow",level:2},{value:"Setup / credentials",id:"setup--credentials",level:2},{value:"Inputs",id:"inputs",level:2},{value:"Outputs",id:"outputs",level:2},{value:"Example",id:"example",level:2},{value:"Tips",id:"tips",level:2},{value:"Related",id:"related",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.header,{children:(0,o.jsx)(t.h1,{id:"google-sheets-tool",children:"Google Sheets Tool"})}),"\n",(0,o.jsxs)(t.p,{children:["The Google Sheets tool lets your flow ",(0,o.jsx)(t.strong,{children:"read and write spreadsheet data"})," \u2014 append a row of captured\nlead info, read a range of values, update cells, or create a new spreadsheet. It's a simple, reliable\nway to log data or use a sheet as a lightweight database."]}),"\n",(0,o.jsxs)(t.p,{children:["Use it inside an ",(0,o.jsx)(t.a,{href:"/docs/agentflow/nodes/agent",children:"Agent node"})," (the agent decides when to read or write) or as a\nstandalone ",(0,o.jsx)(t.a,{href:"/docs/agentflow/nodes/tool",children:"Tool node"})," for a fixed operation."]}),"\n",(0,o.jsx)(t.h2,{id:"adding-it-to-a-flow",children:"Adding it to a flow"}),"\n",(0,o.jsxs)(t.p,{children:["In the Tool node's tool picker, choose ",(0,o.jsx)(t.strong,{children:"Google Sheets"}),", connect your Google account, then pick the\noperation type and actions."]}),"\n",(0,o.jsx)(t.h2,{id:"setup--credentials",children:"Setup / credentials"}),"\n",(0,o.jsxs)(t.p,{children:["The tool connects to Google Sheets with ",(0,o.jsx)(t.strong,{children:"Google OAuth"}),"."]}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["In the tool, use ",(0,o.jsx)(t.strong,{children:"Connect Credential"})," to add (or select) a Google Sheets OAuth connection."]}),"\n",(0,o.jsx)(t.li,{children:"Approve the Google consent screen so Flowera can read and write your spreadsheets."}),"\n"]}),"\n",(0,o.jsx)(t.admonition,{type:"info",children:(0,o.jsx)(t.p,{children:"The connected Google account must have access to the spreadsheet you target. Share the sheet with that\naccount if needed."})}),"\n",(0,o.jsx)(t.h2,{id:"inputs",children:"Inputs"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Parameter"}),(0,o.jsx)(t.th,{children:"Description"}),(0,o.jsx)(t.th,{children:"Required"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"Connect Credential"}),(0,o.jsx)(t.td,{children:"The Google account (OAuth) to use."}),(0,o.jsx)(t.td,{children:"Yes"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"Type"}),(0,o.jsxs)(t.td,{children:["Whether you're working with the ",(0,o.jsx)(t.strong,{children:"Spreadsheet"})," itself or its ",(0,o.jsx)(t.strong,{children:"Values"}),"."]}),(0,o.jsx)(t.td,{children:"Yes"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"Spreadsheet Actions"}),(0,o.jsx)(t.td,{children:"For type Spreadsheet: Create, Get, or Update a spreadsheet."}),(0,o.jsx)(t.td,{children:"When type is Spreadsheet"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"Values Actions"}),(0,o.jsx)(t.td,{children:"For type Values: Get, Update, Append, Clear, and their batch variants."}),(0,o.jsx)(t.td,{children:"When type is Values"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"Spreadsheet ID"}),(0,o.jsx)(t.td,{children:"The id of the spreadsheet to act on."}),(0,o.jsx)(t.td,{children:"For most actions"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"Range"}),(0,o.jsxs)(t.td,{children:["The cells to read/write, e.g. ",(0,o.jsx)(t.code,{children:"A1:B2"})," or ",(0,o.jsx)(t.code,{children:"Sheet1!A1:C10"}),"."]}),(0,o.jsx)(t.td,{children:"For value reads/writes"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"Values"}),(0,o.jsxs)(t.td,{children:["JSON array of rows to write, e.g. ",(0,o.jsx)(t.code,{children:'[["A1","B1"],["A2","B2"]]'}),"."]}),(0,o.jsx)(t.td,{children:"When writing values"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"Title"}),(0,o.jsx)(t.td,{children:"Title for a new or updated spreadsheet."}),(0,o.jsx)(t.td,{children:"When creating/updating"})]})]})]}),"\n",(0,o.jsx)(t.admonition,{type:"note",children:(0,o.jsx)(t.p,{children:"Additional options (value input/render options, major dimension, insert-data behavior) are available\nunder advanced parameters and control exactly how values are read or written."})}),"\n",(0,o.jsx)(t.h2,{id:"outputs",children:"Outputs"}),"\n",(0,o.jsxs)(t.p,{children:["The tool returns the result of the action \u2014 the values you read, or a confirmation of the write. It's\na single-output tool; the flow continues to the next node. Store what you read in\n",(0,o.jsx)(t.a,{href:"/docs/agentflow/concepts/flow-state",children:"flow state"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"example",children:"Example"}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Log every new lead to a sheet"})}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["Add a ",(0,o.jsx)(t.a,{href:"/docs/agentflow/nodes/tool",children:"Tool node"})," with ",(0,o.jsx)(t.strong,{children:"Google Sheets"}),", type ",(0,o.jsx)(t.strong,{children:"Values"}),", action ",(0,o.jsx)(t.strong,{children:"Append Values"}),"."]}),"\n",(0,o.jsxs)(t.li,{children:["Set the ",(0,o.jsx)(t.strong,{children:"Spreadsheet ID"})," and a ",(0,o.jsx)(t.strong,{children:"Range"})," like ",(0,o.jsx)(t.code,{children:"Leads!A:C"}),"."]}),"\n",(0,o.jsxs)(t.li,{children:["Map ",(0,o.jsx)(t.strong,{children:"Values"})," to a row built from the collected ",(0,o.jsx)(t.code,{children:"name"}),", ",(0,o.jsx)(t.code,{children:"email"}),", and ",(0,o.jsx)(t.code,{children:"phone"}),"."]}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:"Each time the flow reaches this node, a new row is appended with the customer's details."}),"\n",(0,o.jsx)(t.h2,{id:"tips",children:"Tips"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Use Append to add rows"})," without overwriting existing data; use Update to change a specific range."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Qualify the range with the sheet name"})," (e.g. ",(0,o.jsx)(t.code,{children:"Leads!A:C"}),") when the spreadsheet has multiple tabs."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Share the sheet"})," with the connected Google account, or reads and writes will fail with a\npermission error."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Values are a 2-D array"})," \u2014 each inner array is one row."]}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"related",children:"Related"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.a,{href:"/docs/agentflow/nodes/tools/zoho-crm",children:"Zoho CRM tool"})," \u2014 a full CRM instead of a spreadsheet"]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.a,{href:"/docs/agentflow/nodes/tools/http-requests",children:"HTTP Requests tools"})," \u2014 call the Sheets API directly for advanced cases"]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.a,{href:"/docs/agentflow/nodes/tool",children:"Tool node"})," \xb7 ",(0,o.jsx)(t.a,{href:"/docs/agentflow/concepts/flow-state",children:"Flow
1state"})]}),"\n"]})]})}function c(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},4315(e,t,s){s.d(t,{R:()=>l,x:()=>d});var n=s(2155);const o={},r=n.createContext(o);function l(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:l(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.