[{"data":1,"prerenderedAt":378},["ShallowReactive",2],{"navigation-en":3,"page-\u002Fen\u002Fgetting-started\u002Fintroduction":134,"\u002Fen\u002Fgetting-started\u002Fintroduction-surround":375},[4],{"title":5,"path":6,"stem":7,"children":8,"page":26},"En","\u002Fen","en",[9,27,48,77,90,97],{"title":10,"path":11,"stem":12,"children":13,"page":26},"Getting Started","\u002Fen\u002Fgetting-started","en\u002F1.getting-started",[14,18,22],{"title":15,"path":16,"stem":17},"Introduction","\u002Fen\u002Fgetting-started\u002Fintroduction","en\u002F1.getting-started\u002F1.introduction",{"title":19,"path":20,"stem":21},"Installation","\u002Fen\u002Fgetting-started\u002Finstallation","en\u002F1.getting-started\u002F2.installation",{"title":23,"path":24,"stem":25},"Configuration Reference","\u002Fen\u002Fgetting-started\u002Fconfiguration","en\u002F1.getting-started\u002F3.configuration",false,{"title":28,"path":29,"stem":30,"children":31,"page":26},"Composables","\u002Fen\u002Fcomposables","en\u002F2.composables",[32,36,40,44],{"title":33,"path":34,"stem":35},"useGSheet","\u002Fen\u002Fcomposables\u002Fuse-gsheet","en\u002F2.composables\u002F1.use-gsheet",{"title":37,"path":38,"stem":39},"useGSheetAsObject","\u002Fen\u002Fcomposables\u002Fuse-gsheet-as-object","en\u002F2.composables\u002F2.use-gsheet-as-object",{"title":41,"path":42,"stem":43},"useGSheetRow","\u002Fen\u002Fcomposables\u002Fuse-gsheet-row","en\u002F2.composables\u002F3.use-gsheet-row",{"title":45,"path":46,"stem":47},"useGSheetWrite","\u002Fen\u002Fcomposables\u002Fuse-gsheet-write","en\u002F2.composables\u002F4.use-gsheet-write",{"title":49,"path":50,"stem":51,"children":52,"page":26},"Authentication Modes","\u002Fen\u002Fauth-modes","en\u002F3.auth-modes",[53,57,61,65,69,73],{"title":54,"path":55,"stem":56},"Authentication Modes Overview","\u002Fen\u002Fauth-modes\u002Foverview","en\u002F3.auth-modes\u002F1.overview",{"title":58,"path":59,"stem":60},"GViz Mode (Google Visualization API)","\u002Fen\u002Fauth-modes\u002Fgviz","en\u002F3.auth-modes\u002F2.gviz",{"title":62,"path":63,"stem":64},"CSV Export Mode","\u002Fen\u002Fauth-modes\u002Fcsv","en\u002F3.auth-modes\u002F3.csv",{"title":66,"path":67,"stem":68},"Google Apps Script Mode","\u002Fen\u002Fauth-modes\u002Fappscript","en\u002F3.auth-modes\u002F4.appscript",{"title":70,"path":71,"stem":72},"API Key Mode","\u002Fen\u002Fauth-modes\u002Fapikey","en\u002F3.auth-modes\u002F5.apikey",{"title":74,"path":75,"stem":76},"Service Account Mode","\u002Fen\u002Fauth-modes\u002Fservice-account","en\u002F3.auth-modes\u002F6.service-account",{"title":78,"path":79,"stem":80,"children":81,"page":26},"AI","\u002Fen\u002Fai","en\u002F4.ai",[82,86],{"title":83,"path":84,"stem":85},"Agent Skills (AI Integration)","\u002Fen\u002Fai\u002Fagent-skills","en\u002F4.ai\u002F1.agent-skills",{"title":87,"path":88,"stem":89},"Model Context Protocol (MCP)","\u002Fen\u002Fai\u002Fmcp","en\u002F4.ai\u002F2.mcp",{"title":91,"path":92,"stem":93,"children":94},"Demos","\u002Fen\u002Fdemos","en\u002F5.demos\u002Findex",[95],{"title":96,"path":92,"stem":93},"Live Demos",{"title":98,"path":99,"stem":100,"children":101,"page":26},"Tutorials","\u002Fen\u002Ftutorials","en\u002F6.tutorials",[102,106,110,114,118,122,126,130],{"title":103,"path":104,"stem":105},"Tutorials Overview","\u002Fen\u002Ftutorials\u002Foverview","en\u002F6.tutorials\u002F0.overview",{"title":107,"path":108,"stem":109},"Apps Script Web App Tutorial","\u002Fen\u002Ftutorials\u002Fappscript-tutorial","en\u002F6.tutorials\u002F1.appscript-tutorial",{"title":111,"path":112,"stem":113},"Complete Step-by-Step Tutorial","\u002Fen\u002Ftutorials\u002Fstep-by-step","en\u002F6.tutorials\u002F1.step-by-step",{"title":115,"path":116,"stem":117},"GViz SQL Analytics Tutorial","\u002Fen\u002Ftutorials\u002Fgviz-sql-tutorial","en\u002F6.tutorials\u002F2.gviz-sql-tutorial",{"title":119,"path":120,"stem":121},"CSV Product Catalog Tutorial","\u002Fen\u002Ftutorials\u002Fcsv-catalog-tutorial","en\u002F6.tutorials\u002F3.csv-catalog-tutorial",{"title":123,"path":124,"stem":125},"API Key Inventory Tutorial","\u002Fen\u002Ftutorials\u002Fapikey-tutorial","en\u002F6.tutorials\u002F4.apikey-tutorial",{"title":127,"path":128,"stem":129},"Service Account HR & Payroll Tutorial","\u002Fen\u002Ftutorials\u002Fservice-account-tutorial","en\u002F6.tutorials\u002F5.service-account-tutorial",{"title":131,"path":132,"stem":133},"Sheet Routing Map Tutorial","\u002Fen\u002Ftutorials\u002Fsheets-routing-tutorial","en\u002F6.tutorials\u002F6.sheets-routing-tutorial",{"id":135,"title":15,"body":136,"description":369,"extension":370,"icon":371,"links":371,"meta":372,"navigation":371,"path":16,"seo":373,"stem":17,"__hash__":374},"docs_en\u002Fen\u002F1.getting-started\u002F1.introduction.md",{"type":137,"value":138,"toc":359},"minimark",[139,147,152,155,184,189,193,240,244,249,256,294,298,301,329,333,339],[140,141,142,146],"p",{},[143,144,145],"code",{},"nuxt-gsheet"," is a zero-config, high-performance, and secure Google Sheets integration module for Nuxt 3 and Nuxt 4. It allows you to seamlessly use Google Sheets as a lightweight CMS or database with server-side proxy security, stampede-proof caching, multi-authentication modes, and a dedicated Nuxt DevTools tab.",[148,149,151],"h2",{"id":150},"why-nuxt-gsheet","Why nuxt-gsheet?",[140,153,154],{},"Google Sheets is a popular choice for content management, prototype databases, and quick data storage due to its familiarity and collaborative real-time editing. However, directly querying Google Sheets from a frontend application presents several challenges:",[156,157,158,166,172,178],"ul",{},[159,160,161,165],"li",{},[162,163,164],"strong",{},"Security Risks",": Exposing raw Spreadsheet IDs, API Keys, or Service Account credentials on the client side leads to unauthorized access and API key theft.",[159,167,168,171],{},[162,169,170],{},"Quota & Rate Limits",": Frequent client-side requests quickly exhaust Google API quotas or trigger Google Apps Script execution throttles.",[159,173,174,177],{},[162,175,176],{},"Cache Stampede",": When multiple concurrent users visit your site during cache expiration, hundreds of simultaneous requests hit Google API endpoints, causing rate limit errors (HTTP 429).",[159,179,180,183],{},[162,181,182],{},"Setup Complexity",": Switching between public sheets, Google Apps Script proxies, GViz endpoints, and private Service Accounts usually requires writing custom backend proxies.",[140,185,186,188],{},[143,187,145],{}," solves all of these problems out of the box with a zero-config Nuxt module.",[148,190,192],{"id":191},"key-features","Key Features",[156,194,195,201,211,217,234],{},[159,196,197,200],{},[162,198,199],{},"⚡️ Multi-Auth Auto-Detection",": Supports Google Sheets API v4 (API Key & Service Account), Google Apps Script Web App proxies, Google Visualization API (GViz), and direct CSV exports.",[159,202,203,206,207,210],{},[162,204,205],{},"🔒 Secure Server Proxy",": Intercepts requests on the server side (",[143,208,209],{},"\u002Fapi\u002F_gsheet\u002F*","). Credentials and spreadsheet endpoints remain strictly hidden from the browser.",[159,212,213,216],{},[162,214,215],{},"🛡️ Cache Stampede Protection",": Serves stale cache when network or quota limits fail, and collapses concurrent identical requests into a single upstream request.",[159,218,219,222,223,225,226,225,228,230,231,233],{},[162,220,221],{},"🧪 Type-Safe Composables",": Provides auto-imported Vue composables (",[143,224,33],{},", ",[143,227,37],{},[143,229,41],{},", and ",[143,232,45],{},") with full TypeScript auto-completion.",[159,235,236,239],{},[162,237,238],{},"📊 Nuxt DevTools Integration",": Monitor intercepted API calls, cache hit\u002Fmiss ratios, active auth modes, and estimated quota usage directly within your Nuxt DevTools.",[148,241,243],{"id":242},"how-it-works","How It Works",[140,245,246,248],{},[143,247,145],{}," acts as a middleware bridge between your Nuxt application and Google Sheets.",[140,250,251],{},[252,253],"img",{"alt":254,"src":255},"How Nuxt GSheet Works","\u002Fdocs\u002Fnuxt-gsheet.webp",[257,258,259,269,278,288],"ol",{},[159,260,261,264,265,268],{},[162,262,263],{},"Client Request",": Your Vue component calls a composable such as ",[143,266,267],{},"useGSheetAsObject('A1:C10')",".",[159,270,271,274,275,277],{},[162,272,273],{},"Server Handling",": The request is routed to Nuxt's internal server engine (",[143,276,209],{},").",[159,279,280,283,284,287],{},[162,281,282],{},"Cache & Stampede Check",": If valid data exists in the cache, it returns immediately. If data is stale or missing, only ",[162,285,286],{},"one"," request is dispatched to Google Sheets regardless of how many client components requested it simultaneously.",[159,289,290,293],{},[162,291,292],{},"Data Formatting",": Raw cell values are converted into structured JavaScript objects or arrays and returned safely to your client application.",[148,295,297],{"id":296},"prerequisites","Prerequisites",[140,299,300],{},"Before getting started, ensure your environment meets the following requirements:",[156,302,303,316],{},[159,304,305,308,309,312,313],{},[162,306,307],{},"Nuxt",": Version ",[143,310,311],{},"^3.10.0"," or Nuxt ",[143,314,315],{},"4.x",[159,317,318,308,321,324,325,328],{},[162,319,320],{},"Node.js",[143,322,323],{},"^18.0.0"," or higher (or Bun ",[143,326,327],{},"^1.0.0",")",[148,330,332],{"id":331},"next-steps","Next Steps",[140,334,335,336,338],{},"Now that you understand the core concepts of ",[143,337,145],{},", you are ready to set it up in your project:",[156,340,341,348,353],{},[159,342,343],{},[344,345,347],"a",{"href":346},"\u002Fgetting-started\u002Finstallation","Installation & Quick Setup",[159,349,350],{},[344,351,23],{"href":352},"\u002Fgetting-started\u002Fconfiguration",[159,354,355],{},[344,356,358],{"href":357},"\u002Fcomposables\u002Fuse-gsheet","Composables Overview",{"title":360,"searchDepth":361,"depth":362,"links":363},"",1,2,[364,365,366,367,368],{"id":150,"depth":362,"text":151},{"id":191,"depth":362,"text":192},{"id":242,"depth":362,"text":243},{"id":296,"depth":362,"text":297},{"id":331,"depth":362,"text":332},"Overview of nuxt-gsheet architecture, features, and benefits.","md",null,{},{"title":15,"description":369},"sDdNuP89iBqFYM3gUo6EoyZ246VqOC0wUwNEmEepwIg",[371,376],{"title":19,"path":20,"stem":21,"description":377,"children":-1},"Install nuxt-gsheet package, register the module, and configure environment variables.",1786088226493]