[{"data":1,"prerenderedAt":1315},["ShallowReactive",2],{"navigation-en":3,"page-\u002Fen\u002Ftutorials\u002Fgviz-sql-tutorial":134,"\u002Fen\u002Ftutorials\u002Fgviz-sql-tutorial-surround":1310},[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":115,"body":136,"description":1304,"extension":1305,"icon":1306,"links":1306,"meta":1307,"navigation":1306,"path":116,"seo":1308,"stem":117,"__hash__":1309},"docs_en\u002Fen\u002F6.tutorials\u002F2.gviz-sql-tutorial.md",{"type":137,"value":138,"toc":1300},"minimark",[139,143,146,151,201,217,219,223,1296],[140,141,142],"p",{},"Learn how to query, filter, and aggregate data directly on Google's servers using Google Visualization API (GViz) and SQL queries.",[144,145],"hr",{},[147,148,150],"h2",{"id":149},"_1-google-sheets-setup","1. Google Sheets Setup",[152,153,154,163,172,188,194],"ol",{},[155,156,157,158,162],"li",{},"Create a public Google Sheet named ",[159,160,161],"strong",{},"Sales Analytics",".",[155,164,165,166,162],{},"Name the tab ",[159,167,168],{},[169,170,171],"code",{},"sales",[155,173,174,175,178,179,178,182,178,185,162],{},"Headers in Row 1: ",[169,176,177],{},"region",", ",[169,180,181],{},"salesperson",[169,183,184],{},"revenue",[169,186,187],{},"status",[155,189,190,191,162],{},"Share sheet as ",[159,192,193],{},"Anyone with the link can view",[155,195,196,197,200],{},"Add Spreadsheet ID to ",[169,198,199],{},".env",":",[202,203,208],"pre",{"className":204,"code":205,"filename":199,"language":206,"meta":207,"style":207},"language-env shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","GSHEET_SPREADSHEET_ID=1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms\n","env","",[169,209,210],{"__ignoreMap":207},[211,212,215],"span",{"class":213,"line":214},"line",1,[211,216,205],{},[144,218],{},[147,220,222],{"id":221},"_2-dynamic-sql-filtering-vue-component","2. Dynamic SQL Filtering Vue Component",[202,224,229],{"className":225,"code":226,"filename":227,"language":228,"meta":207,"style":207},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\ninterface SaleRecord {\n  region: string\n  salesperson: string\n  revenue: number\n  status: string\n}\n\nconst selectedRegion = ref('North')\nconst minRevenue = ref(1000)\n\n\u002F\u002F Computed GViz SQL query string\nconst sqlQuery = computed(() => {\n  return `SELECT A, B, C, D WHERE A = '${selectedRegion.value}' AND C >= ${minRevenue.value} ORDER BY C DESC`\n})\n\n\u002F\u002F Fetch filtered data using reactive query\nconst { data: sales, pending, refresh } = await useGSheetAsObject\u003CSaleRecord[]>('A1:D100', {\n  sheet: 'sales',\n  query: sqlQuery.value\n})\n\nwatch([selectedRegion, minRevenue], () => {\n  refresh()\n})\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv class=\"analytics-dashboard\">\n    \u003Ch1>Sales Analytics Dashboard\u003C\u002Fh1>\n\n    \u003Cdiv class=\"filters\">\n      \u003Clabel>Region:\u003C\u002Flabel>\n      \u003Cselect v-model=\"selectedRegion\">\n        \u003Coption value=\"North\">\n          North\n        \u003C\u002Foption>\n        \u003Coption value=\"South\">\n          South\n        \u003C\u002Foption>\n        \u003Coption value=\"East\">\n          East\n        \u003C\u002Foption>\n      \u003C\u002Fselect>\n\n      \u003Clabel>Min Revenue ($):\u003C\u002Flabel>\n      \u003Cinput\n        v-model.number=\"minRevenue\"\n        type=\"number\"\n      >\n    \u003C\u002Fdiv>\n\n    \u003Cdiv v-if=\"pending\">\n      Executing GViz SQL Query...\n    \u003C\u002Fdiv>\n    \u003Ctable v-else>\n      \u003Cthead>\n        \u003Ctr>\n          \u003Cth>Region\u003C\u002Fth>\n          \u003Cth>Salesperson\u003C\u002Fth>\n          \u003Cth>Revenue\u003C\u002Fth>\n          \u003Cth>Status\u003C\u002Fth>\n        \u003C\u002Ftr>\n      \u003C\u002Fthead>\n      \u003Ctbody>\n        \u003Ctr\n          v-for=\"(row, idx) in sales\"\n          :key=\"idx\"\n        >\n          \u003Ctd>{{ row.region }}\u003C\u002Ftd>\n          \u003Ctd>{{ row.salesperson }}\u003C\u002Ftd>\n          \u003Ctd>${{ row.revenue }}\u003C\u002Ftd>\n          \u003Ctd>{{ row.status }}\u003C\u002Ftd>\n        \u003C\u002Ftr>\n      \u003C\u002Ftbody>\n    \u003C\u002Ftable>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","pages\u002Fanalytics.vue","vue",[169,230,231,263,276,287,297,308,318,324,331,361,381,386,393,416,463,470,475,481,543,561,577,584,589,612,621,628,638,643,653,676,696,701,721,741,762,784,790,800,820,826,835,855,861,870,880,885,903,911,926,941,947,957,962,983,989,998,1011,1021,1031,1051,1069,1087,1105,1114,1123,1133,1141,1156,1171,1177,1196,1214,1232,1250,1259,1268,1277,1287],{"__ignoreMap":207},[211,232,233,237,241,245,248,251,254,258,260],{"class":213,"line":214},[211,234,236],{"class":235},"sMK4o","\u003C",[211,238,240],{"class":239},"swJcz","script",[211,242,244],{"class":243},"spNyl"," setup",[211,246,247],{"class":243}," lang",[211,249,250],{"class":235},"=",[211,252,253],{"class":235},"\"",[211,255,257],{"class":256},"sfazB","ts",[211,259,253],{"class":235},[211,261,262],{"class":235},">\n",[211,264,266,269,273],{"class":213,"line":265},2,[211,267,268],{"class":243},"interface",[211,270,272],{"class":271},"sBMFI"," SaleRecord",[211,274,275],{"class":235}," {\n",[211,277,279,282,284],{"class":213,"line":278},3,[211,280,281],{"class":239},"  region",[211,283,200],{"class":235},[211,285,286],{"class":271}," string\n",[211,288,290,293,295],{"class":213,"line":289},4,[211,291,292],{"class":239},"  salesperson",[211,294,200],{"class":235},[211,296,286],{"class":271},[211,298,300,303,305],{"class":213,"line":299},5,[211,301,302],{"class":239},"  revenue",[211,304,200],{"class":235},[211,306,307],{"class":271}," number\n",[211,309,311,314,316],{"class":213,"line":310},6,[211,312,313],{"class":239},"  status",[211,315,200],{"class":235},[211,317,286],{"class":271},[211,319,321],{"class":213,"line":320},7,[211,322,323],{"class":235},"}\n",[211,325,327],{"class":213,"line":326},8,[211,328,330],{"emptyLinePlaceholder":329},true,"\n",[211,332,334,337,341,343,347,350,353,356,358],{"class":213,"line":333},9,[211,335,336],{"class":243},"const",[211,338,340],{"class":339},"sTEyZ"," selectedRegion ",[211,342,250],{"class":235},[211,344,346],{"class":345},"s2Zo4"," ref",[211,348,349],{"class":339},"(",[211,351,352],{"class":235},"'",[211,354,355],{"class":256},"North",[211,357,352],{"class":235},[211,359,360],{"class":339},")\n",[211,362,364,366,369,371,373,375,379],{"class":213,"line":363},10,[211,365,336],{"class":243},[211,367,368],{"class":339}," minRevenue ",[211,370,250],{"class":235},[211,372,346],{"class":345},[211,374,349],{"class":339},[211,376,378],{"class":377},"sbssI","1000",[211,380,360],{"class":339},[211,382,384],{"class":213,"line":383},11,[211,385,330],{"emptyLinePlaceholder":329},[211,387,389],{"class":213,"line":388},12,[211,390,392],{"class":391},"sHwdD","\u002F\u002F Computed GViz SQL query string\n",[211,394,396,398,401,403,406,408,411,414],{"class":213,"line":395},13,[211,397,336],{"class":243},[211,399,400],{"class":339}," sqlQuery ",[211,402,250],{"class":235},[211,404,405],{"class":345}," computed",[211,407,349],{"class":339},[211,409,410],{"class":235},"()",[211,412,413],{"class":243}," =>",[211,415,275],{"class":235},[211,417,419,423,426,429,432,435,437,440,443,446,448,451,453,455,457,460],{"class":213,"line":418},14,[211,420,422],{"class":421},"s7zQu","  return",[211,424,425],{"class":235}," `",[211,427,428],{"class":256},"SELECT A, B, C, D WHERE A = '",[211,430,431],{"class":235},"${",[211,433,434],{"class":339},"selectedRegion",[211,436,162],{"class":235},[211,438,439],{"class":339},"value",[211,441,442],{"class":235},"}",[211,444,445],{"class":256},"' AND C >= ",[211,447,431],{"class":235},[211,449,450],{"class":339},"minRevenue",[211,452,162],{"class":235},[211,454,439],{"class":339},[211,456,442],{"class":235},[211,458,459],{"class":256}," ORDER BY C DESC",[211,461,462],{"class":235},"`\n",[211,464,466,468],{"class":213,"line":465},15,[211,467,442],{"class":235},[211,469,360],{"class":339},[211,471,473],{"class":213,"line":472},16,[211,474,330],{"emptyLinePlaceholder":329},[211,476,478],{"class":213,"line":477},17,[211,479,480],{"class":391},"\u002F\u002F Fetch filtered data using reactive query\n",[211,482,484,486,489,492,494,497,500,503,505,508,510,513,516,519,521,524,527,530,532,534,537,539,541],{"class":213,"line":483},18,[211,485,336],{"class":243},[211,487,488],{"class":235}," {",[211,490,491],{"class":239}," data",[211,493,200],{"class":235},[211,495,496],{"class":339}," sales",[211,498,499],{"class":235},",",[211,501,502],{"class":339}," pending",[211,504,499],{"class":235},[211,506,507],{"class":339}," refresh ",[211,509,442],{"class":235},[211,511,512],{"class":235}," =",[211,514,515],{"class":421}," await",[211,517,518],{"class":345}," useGSheetAsObject",[211,520,236],{"class":235},[211,522,523],{"class":271},"SaleRecord",[211,525,526],{"class":339},"[]",[211,528,529],{"class":235},">",[211,531,349],{"class":339},[211,533,352],{"class":235},[211,535,536],{"class":256},"A1:D100",[211,538,352],{"class":235},[211,540,499],{"class":235},[211,542,275],{"class":235},[211,544,546,549,551,554,556,558],{"class":213,"line":545},19,[211,547,548],{"class":239},"  sheet",[211,550,200],{"class":235},[211,552,553],{"class":235}," '",[211,555,171],{"class":256},[211,557,352],{"class":235},[211,559,560],{"class":235},",\n",[211,562,564,567,569,572,574],{"class":213,"line":563},20,[211,565,566],{"class":239},"  query",[211,568,200],{"class":235},[211,570,571],{"class":339}," sqlQuery",[211,573,162],{"class":235},[211,575,576],{"class":339},"value\n",[211,578,580,582],{"class":213,"line":579},21,[211,581,442],{"class":235},[211,583,360],{"class":339},[211,585,587],{"class":213,"line":586},22,[211,588,330],{"emptyLinePlaceholder":329},[211,590,592,595,598,600,603,605,608,610],{"class":213,"line":591},23,[211,593,594],{"class":345},"watch",[211,596,597],{"class":339},"([selectedRegion",[211,599,499],{"class":235},[211,601,602],{"class":339}," minRevenue]",[211,604,499],{"class":235},[211,606,607],{"class":235}," ()",[211,609,413],{"class":243},[211,611,275],{"class":235},[211,613,615,618],{"class":213,"line":614},24,[211,616,617],{"class":345},"  refresh",[211,619,620],{"class":239},"()\n",[211,622,624,626],{"class":213,"line":623},25,[211,625,442],{"class":235},[211,627,360],{"class":339},[211,629,631,634,636],{"class":213,"line":630},26,[211,632,633],{"class":235},"\u003C\u002F",[211,635,240],{"class":239},[211,637,262],{"class":235},[211,639,641],{"class":213,"line":640},27,[211,642,330],{"emptyLinePlaceholder":329},[211,644,646,648,651],{"class":213,"line":645},28,[211,647,236],{"class":235},[211,649,650],{"class":239},"template",[211,652,262],{"class":235},[211,654,656,659,662,665,667,669,672,674],{"class":213,"line":655},29,[211,657,658],{"class":235},"  \u003C",[211,660,661],{"class":239},"div",[211,663,664],{"class":243}," class",[211,666,250],{"class":235},[211,668,253],{"class":235},[211,670,671],{"class":256},"analytics-dashboard",[211,673,253],{"class":235},[211,675,262],{"class":235},[211,677,679,682,685,687,690,692,694],{"class":213,"line":678},30,[211,680,681],{"class":235},"    \u003C",[211,683,684],{"class":239},"h1",[211,686,529],{"class":235},[211,688,689],{"class":339},"Sales Analytics Dashboard",[211,691,633],{"class":235},[211,693,684],{"class":239},[211,695,262],{"class":235},[211,697,699],{"class":213,"line":698},31,[211,700,330],{"emptyLinePlaceholder":329},[211,702,704,706,708,710,712,714,717,719],{"class":213,"line":703},32,[211,705,681],{"class":235},[211,707,661],{"class":239},[211,709,664],{"class":243},[211,711,250],{"class":235},[211,713,253],{"class":235},[211,715,716],{"class":256},"filters",[211,718,253],{"class":235},[211,720,262],{"class":235},[211,722,724,727,730,732,735,737,739],{"class":213,"line":723},33,[211,725,726],{"class":235},"      \u003C",[211,728,729],{"class":239},"label",[211,731,529],{"class":235},[211,733,734],{"class":339},"Region:",[211,736,633],{"class":235},[211,738,729],{"class":239},[211,740,262],{"class":235},[211,742,744,746,749,752,754,756,758,760],{"class":213,"line":743},34,[211,745,726],{"class":235},[211,747,748],{"class":239},"select",[211,750,751],{"class":243}," v-model",[211,753,250],{"class":235},[211,755,253],{"class":235},[211,757,434],{"class":256},[211,759,253],{"class":235},[211,761,262],{"class":235},[211,763,765,768,771,774,776,778,780,782],{"class":213,"line":764},35,[211,766,767],{"class":235},"        \u003C",[211,769,770],{"class":239},"option",[211,772,773],{"class":243}," value",[211,775,250],{"class":235},[211,777,253],{"class":235},[211,779,355],{"class":256},[211,781,253],{"class":235},[211,783,262],{"class":235},[211,785,787],{"class":213,"line":786},36,[211,788,789],{"class":339},"          North\n",[211,791,793,796,798],{"class":213,"line":792},37,[211,794,795],{"class":235},"        \u003C\u002F",[211,797,770],{"class":239},[211,799,262],{"class":235},[211,801,803,805,807,809,811,813,816,818],{"class":213,"line":802},38,[211,804,767],{"class":235},[211,806,770],{"class":239},[211,808,773],{"class":243},[211,810,250],{"class":235},[211,812,253],{"class":235},[211,814,815],{"class":256},"South",[211,817,253],{"class":235},[211,819,262],{"class":235},[211,821,823],{"class":213,"line":822},39,[211,824,825],{"class":339},"          South\n",[211,827,829,831,833],{"class":213,"line":828},40,[211,830,795],{"class":235},[211,832,770],{"class":239},[211,834,262],{"class":235},[211,836,838,840,842,844,846,848,851,853],{"class":213,"line":837},41,[211,839,767],{"class":235},[211,841,770],{"class":239},[211,843,773],{"class":243},[211,845,250],{"class":235},[211,847,253],{"class":235},[211,849,850],{"class":256},"East",[211,852,253],{"class":235},[211,854,262],{"class":235},[211,856,858],{"class":213,"line":857},42,[211,859,860],{"class":339},"          East\n",[211,862,864,866,868],{"class":213,"line":863},43,[211,865,795],{"class":235},[211,867,770],{"class":239},[211,869,262],{"class":235},[211,871,873,876,878],{"class":213,"line":872},44,[211,874,875],{"class":235},"      \u003C\u002F",[211,877,748],{"class":239},[211,879,262],{"class":235},[211,881,883],{"class":213,"line":882},45,[211,884,330],{"emptyLinePlaceholder":329},[211,886,888,890,892,894,897,899,901],{"class":213,"line":887},46,[211,889,726],{"class":235},[211,891,729],{"class":239},[211,893,529],{"class":235},[211,895,896],{"class":339},"Min Revenue ($):",[211,898,633],{"class":235},[211,900,729],{"class":239},[211,902,262],{"class":235},[211,904,906,908],{"class":213,"line":905},47,[211,907,726],{"class":235},[211,909,910],{"class":239},"input\n",[211,912,914,917,919,921,923],{"class":213,"line":913},48,[211,915,916],{"class":243},"        v-model.number",[211,918,250],{"class":235},[211,920,253],{"class":235},[211,922,450],{"class":256},[211,924,925],{"class":235},"\"\n",[211,927,929,932,934,936,939],{"class":213,"line":928},49,[211,930,931],{"class":243},"        type",[211,933,250],{"class":235},[211,935,253],{"class":235},[211,937,938],{"class":256},"number",[211,940,925],{"class":235},[211,942,944],{"class":213,"line":943},50,[211,945,946],{"class":235},"      >\n",[211,948,950,953,955],{"class":213,"line":949},51,[211,951,952],{"class":235},"    \u003C\u002F",[211,954,661],{"class":239},[211,956,262],{"class":235},[211,958,960],{"class":213,"line":959},52,[211,961,330],{"emptyLinePlaceholder":329},[211,963,965,967,969,972,974,976,979,981],{"class":213,"line":964},53,[211,966,681],{"class":235},[211,968,661],{"class":239},[211,970,971],{"class":243}," v-if",[211,973,250],{"class":235},[211,975,253],{"class":235},[211,977,978],{"class":256},"pending",[211,980,253],{"class":235},[211,982,262],{"class":235},[211,984,986],{"class":213,"line":985},54,[211,987,988],{"class":339},"      Executing GViz SQL Query...\n",[211,990,992,994,996],{"class":213,"line":991},55,[211,993,952],{"class":235},[211,995,661],{"class":239},[211,997,262],{"class":235},[211,999,1001,1003,1006,1009],{"class":213,"line":1000},56,[211,1002,681],{"class":235},[211,1004,1005],{"class":239},"table",[211,1007,1008],{"class":243}," v-else",[211,1010,262],{"class":235},[211,1012,1014,1016,1019],{"class":213,"line":1013},57,[211,1015,726],{"class":235},[211,1017,1018],{"class":239},"thead",[211,1020,262],{"class":235},[211,1022,1024,1026,1029],{"class":213,"line":1023},58,[211,1025,767],{"class":235},[211,1027,1028],{"class":239},"tr",[211,1030,262],{"class":235},[211,1032,1034,1037,1040,1042,1045,1047,1049],{"class":213,"line":1033},59,[211,1035,1036],{"class":235},"          \u003C",[211,1038,1039],{"class":239},"th",[211,1041,529],{"class":235},[211,1043,1044],{"class":339},"Region",[211,1046,633],{"class":235},[211,1048,1039],{"class":239},[211,1050,262],{"class":235},[211,1052,1054,1056,1058,1060,1063,1065,1067],{"class":213,"line":1053},60,[211,1055,1036],{"class":235},[211,1057,1039],{"class":239},[211,1059,529],{"class":235},[211,1061,1062],{"class":339},"Salesperson",[211,1064,633],{"class":235},[211,1066,1039],{"class":239},[211,1068,262],{"class":235},[211,1070,1072,1074,1076,1078,1081,1083,1085],{"class":213,"line":1071},61,[211,1073,1036],{"class":235},[211,1075,1039],{"class":239},[211,1077,529],{"class":235},[211,1079,1080],{"class":339},"Revenue",[211,1082,633],{"class":235},[211,1084,1039],{"class":239},[211,1086,262],{"class":235},[211,1088,1090,1092,1094,1096,1099,1101,1103],{"class":213,"line":1089},62,[211,1091,1036],{"class":235},[211,1093,1039],{"class":239},[211,1095,529],{"class":235},[211,1097,1098],{"class":339},"Status",[211,1100,633],{"class":235},[211,1102,1039],{"class":239},[211,1104,262],{"class":235},[211,1106,1108,1110,1112],{"class":213,"line":1107},63,[211,1109,795],{"class":235},[211,1111,1028],{"class":239},[211,1113,262],{"class":235},[211,1115,1117,1119,1121],{"class":213,"line":1116},64,[211,1118,875],{"class":235},[211,1120,1018],{"class":239},[211,1122,262],{"class":235},[211,1124,1126,1128,1131],{"class":213,"line":1125},65,[211,1127,726],{"class":235},[211,1129,1130],{"class":239},"tbody",[211,1132,262],{"class":235},[211,1134,1136,1138],{"class":213,"line":1135},66,[211,1137,767],{"class":235},[211,1139,1140],{"class":239},"tr\n",[211,1142,1144,1147,1149,1151,1154],{"class":213,"line":1143},67,[211,1145,1146],{"class":243},"          v-for",[211,1148,250],{"class":235},[211,1150,253],{"class":235},[211,1152,1153],{"class":256},"(row, idx) in sales",[211,1155,925],{"class":235},[211,1157,1159,1162,1164,1166,1169],{"class":213,"line":1158},68,[211,1160,1161],{"class":243},"          :key",[211,1163,250],{"class":235},[211,1165,253],{"class":235},[211,1167,1168],{"class":256},"idx",[211,1170,925],{"class":235},[211,1172,1174],{"class":213,"line":1173},69,[211,1175,1176],{"class":235},"        >\n",[211,1178,1180,1182,1185,1187,1190,1192,1194],{"class":213,"line":1179},70,[211,1181,1036],{"class":235},[211,1183,1184],{"class":239},"td",[211,1186,529],{"class":235},[211,1188,1189],{"class":339},"{{ row.region }}",[211,1191,633],{"class":235},[211,1193,1184],{"class":239},[211,1195,262],{"class":235},[211,1197,1199,1201,1203,1205,1208,1210,1212],{"class":213,"line":1198},71,[211,1200,1036],{"class":235},[211,1202,1184],{"class":239},[211,1204,529],{"class":235},[211,1206,1207],{"class":339},"{{ row.salesperson }}",[211,1209,633],{"class":235},[211,1211,1184],{"class":239},[211,1213,262],{"class":235},[211,1215,1217,1219,1221,1223,1226,1228,1230],{"class":213,"line":1216},72,[211,1218,1036],{"class":235},[211,1220,1184],{"class":239},[211,1222,529],{"class":235},[211,1224,1225],{"class":339},"${{ row.revenue }}",[211,1227,633],{"class":235},[211,1229,1184],{"class":239},[211,1231,262],{"class":235},[211,1233,1235,1237,1239,1241,1244,1246,1248],{"class":213,"line":1234},73,[211,1236,1036],{"class":235},[211,1238,1184],{"class":239},[211,1240,529],{"class":235},[211,1242,1243],{"class":339},"{{ row.status }}",[211,1245,633],{"class":235},[211,1247,1184],{"class":239},[211,1249,262],{"class":235},[211,1251,1253,1255,1257],{"class":213,"line":1252},74,[211,1254,795],{"class":235},[211,1256,1028],{"class":239},[211,1258,262],{"class":235},[211,1260,1262,1264,1266],{"class":213,"line":1261},75,[211,1263,875],{"class":235},[211,1265,1130],{"class":239},[211,1267,262],{"class":235},[211,1269,1271,1273,1275],{"class":213,"line":1270},76,[211,1272,952],{"class":235},[211,1274,1005],{"class":239},[211,1276,262],{"class":235},[211,1278,1280,1283,1285],{"class":213,"line":1279},77,[211,1281,1282],{"class":235},"  \u003C\u002F",[211,1284,661],{"class":239},[211,1286,262],{"class":235},[211,1288,1290,1292,1294],{"class":213,"line":1289},78,[211,1291,633],{"class":235},[211,1293,650],{"class":239},[211,1295,262],{"class":235},[1297,1298,1299],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":207,"searchDepth":214,"depth":265,"links":1301},[1302,1303],{"id":149,"depth":265,"text":150},{"id":221,"depth":265,"text":222},"Build a dynamic sales analytics dashboard with GViz SQL query filtering.","md",null,{},{"title":115,"description":1304},"QFJhisRatw8DO6Ap92_wYH2yAVtpmAqsRBvvCK3sSBA",[1311,1313],{"title":111,"path":112,"stem":113,"description":1312,"children":-1},"End-to-end tutorial covering Apps Script, GCP Console, and Nuxt Admin Portal.",{"title":119,"path":120,"stem":121,"description":1314,"children":-1},"Build an e-commerce product catalog using direct CSV export streams.",1786088230362]