[{"data":1,"prerenderedAt":1422},["ShallowReactive",2],{"navigation-en":3,"page-\u002Fen\u002Ftutorials\u002Fservice-account-tutorial":134,"\u002Fen\u002Ftutorials\u002Fservice-account-tutorial-surround":1417},[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":127,"body":136,"description":1411,"extension":1412,"icon":1413,"links":1413,"meta":1414,"navigation":1413,"path":128,"seo":1415,"stem":129,"__hash__":1416},"docs_en\u002Fen\u002F6.tutorials\u002F5.service-account-tutorial.md",{"type":137,"value":138,"toc":1407},"minimark",[139,143,146,151,191,220,222,226,1403],[140,141,142],"p",{},"Learn how to securely access unshared, private Google Sheets for enterprise HR and payroll records.",[144,145],"hr",{},[147,148,150],"h2",{"id":149},"_1-setup-service-account-credentials","1. Setup Service Account Credentials",[152,153,154,168,175,184],"ol",{},[155,156,157,158,162,163,167],"li",{},"In GCP Console, create a ",[159,160,161],"strong",{},"Service Account"," (e.g. ",[164,165,166],"code",{},"hr-bot@project.iam.gserviceaccount.com",").",[155,169,170,171,174],{},"Create and download a ",[159,172,173],{},"JSON Key File",".",[155,176,177,178,180,181,174],{},"Open your private Google Sheet -> Share with ",[164,179,166],{}," as ",[159,182,183],{},"Editor",[155,185,186,187,190],{},"Configure ",[164,188,189],{},".env",":",[192,193,198],"pre",{"className":194,"code":195,"filename":189,"language":196,"meta":197,"style":197},"language-env shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","GSHEET_SPREADSHEET_ID=your-private-spreadsheet-id\nGSHEET_CLIENT_EMAIL=hr-bot@project.iam.gserviceaccount.com\nGSHEET_PRIVATE_KEY=\"-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC...\\n-----END PRIVATE KEY-----\\n\"\n","env","",[164,199,200,208,214],{"__ignoreMap":197},[201,202,205],"span",{"class":203,"line":204},"line",1,[201,206,207],{},"GSHEET_SPREADSHEET_ID=your-private-spreadsheet-id\n",[201,209,211],{"class":203,"line":210},2,[201,212,213],{},"GSHEET_CLIENT_EMAIL=hr-bot@project.iam.gserviceaccount.com\n",[201,215,217],{"class":203,"line":216},3,[201,218,219],{},"GSHEET_PRIVATE_KEY=\"-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC...\\n-----END PRIVATE KEY-----\\n\"\n",[144,221],{},[147,223,225],{"id":224},"_2-vue-component-implementation-read-write","2. Vue Component Implementation (Read & Write)",[192,227,232],{"className":228,"code":229,"filename":230,"language":231,"meta":197,"style":197},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\ninterface Employee {\n  empId: string\n  name: string\n  department: string\n  salary: string\n}\n\n\u002F\u002F 1. Secure Server-Side Read\nconst { data: employees, pending, refresh } = await useGSheetAsObject\u003CEmployee[]>('A1:D50', {\n  sheet: 'payroll'\n})\n\n\u002F\u002F 2. Private Write Operations\nconst { append } = useGSheetWrite({ sheet: 'payroll' })\n\nconst name = ref('')\nconst department = ref('Engineering')\nconst salary = ref('85000')\n\nconst addEmployee = async () => {\n  if (!name.value) return\n  await append('A1:D1', [\n    [`EMP-${Date.now()}`, name.value, department.value, salary.value]\n  ])\n  name.value = ''\n  await refresh()\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv class=\"hr-portal\">\n    \u003Ch1>Enterprise HR & Payroll Portal\u003C\u002Fh1>\n\n    \u003Cform @submit.prevent=\"addEmployee\">\n      \u003Cinput\n        v-model=\"name\"\n        placeholder=\"Employee Name\"\n        required\n      >\n      \u003Cselect v-model=\"department\">\n        \u003Coption value=\"Engineering\">\n          Engineering\n        \u003C\u002Foption>\n        \u003Coption value=\"Marketing\">\n          Marketing\n        \u003C\u002Foption>\n      \u003C\u002Fselect>\n      \u003Cinput\n        v-model=\"salary\"\n        placeholder=\"Salary\"\n        required\n      >\n      \u003Cbutton type=\"submit\">\n        Add Employee\n      \u003C\u002Fbutton>\n    \u003C\u002Fform>\n\n    \u003Cdiv v-if=\"pending\">\n      Authenticating JWT & loading private records...\n    \u003C\u002Fdiv>\n    \u003Ctable v-else>\n      \u003Cthead>\n        \u003Ctr>\n          \u003Cth>ID\u003C\u002Fth>\n          \u003Cth>Name\u003C\u002Fth>\n          \u003Cth>Dept\u003C\u002Fth>\n          \u003Cth>Salary\u003C\u002Fth>\n        \u003C\u002Ftr>\n      \u003C\u002Fthead>\n      \u003Ctbody>\n        \u003Ctr\n          v-for=\"emp in employees\"\n          :key=\"emp.empId\"\n        >\n          \u003Ctd>{{ emp.empId }}\u003C\u002Ftd>\n          \u003Ctd>{{ emp.name }}\u003C\u002Ftd>\n          \u003Ctd>{{ emp.department }}\u003C\u002Ftd>\n          \u003Ctd>${{ emp.salary }}\u003C\u002Ftd>\n        \u003C\u002Ftr>\n      \u003C\u002Ftbody>\n    \u003C\u002Ftable>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","pages\u002Fhr\u002Femployees.vue","vue",[164,233,234,266,278,288,298,308,318,324,331,338,407,424,432,437,443,481,486,506,529,552,557,578,604,627,686,692,706,717,722,732,737,747,770,790,795,817,826,841,856,862,868,890,912,918,928,948,954,963,973,980,994,1008,1013,1018,1040,1046,1055,1065,1070,1091,1097,1106,1119,1129,1139,1159,1177,1195,1212,1221,1230,1240,1248,1263,1278,1284,1303,1321,1339,1357,1366,1375,1384,1394],{"__ignoreMap":197},[201,235,236,240,244,248,251,254,257,261,263],{"class":203,"line":204},[201,237,239],{"class":238},"sMK4o","\u003C",[201,241,243],{"class":242},"swJcz","script",[201,245,247],{"class":246},"spNyl"," setup",[201,249,250],{"class":246}," lang",[201,252,253],{"class":238},"=",[201,255,256],{"class":238},"\"",[201,258,260],{"class":259},"sfazB","ts",[201,262,256],{"class":238},[201,264,265],{"class":238},">\n",[201,267,268,271,275],{"class":203,"line":210},[201,269,270],{"class":246},"interface",[201,272,274],{"class":273},"sBMFI"," Employee",[201,276,277],{"class":238}," {\n",[201,279,280,283,285],{"class":203,"line":216},[201,281,282],{"class":242},"  empId",[201,284,190],{"class":238},[201,286,287],{"class":273}," string\n",[201,289,291,294,296],{"class":203,"line":290},4,[201,292,293],{"class":242},"  name",[201,295,190],{"class":238},[201,297,287],{"class":273},[201,299,301,304,306],{"class":203,"line":300},5,[201,302,303],{"class":242},"  department",[201,305,190],{"class":238},[201,307,287],{"class":273},[201,309,311,314,316],{"class":203,"line":310},6,[201,312,313],{"class":242},"  salary",[201,315,190],{"class":238},[201,317,287],{"class":273},[201,319,321],{"class":203,"line":320},7,[201,322,323],{"class":238},"}\n",[201,325,327],{"class":203,"line":326},8,[201,328,330],{"emptyLinePlaceholder":329},true,"\n",[201,332,334],{"class":203,"line":333},9,[201,335,337],{"class":336},"sHwdD","\u002F\u002F 1. Secure Server-Side Read\n",[201,339,341,344,347,350,352,356,359,362,364,367,370,373,377,381,383,386,389,392,395,398,401,403,405],{"class":203,"line":340},10,[201,342,343],{"class":246},"const",[201,345,346],{"class":238}," {",[201,348,349],{"class":242}," data",[201,351,190],{"class":238},[201,353,355],{"class":354},"sTEyZ"," employees",[201,357,358],{"class":238},",",[201,360,361],{"class":354}," pending",[201,363,358],{"class":238},[201,365,366],{"class":354}," refresh ",[201,368,369],{"class":238},"}",[201,371,372],{"class":238}," =",[201,374,376],{"class":375},"s7zQu"," await",[201,378,380],{"class":379},"s2Zo4"," useGSheetAsObject",[201,382,239],{"class":238},[201,384,385],{"class":273},"Employee",[201,387,388],{"class":354},"[]",[201,390,391],{"class":238},">",[201,393,394],{"class":354},"(",[201,396,397],{"class":238},"'",[201,399,400],{"class":259},"A1:D50",[201,402,397],{"class":238},[201,404,358],{"class":238},[201,406,277],{"class":238},[201,408,410,413,415,418,421],{"class":203,"line":409},11,[201,411,412],{"class":242},"  sheet",[201,414,190],{"class":238},[201,416,417],{"class":238}," '",[201,419,420],{"class":259},"payroll",[201,422,423],{"class":238},"'\n",[201,425,427,429],{"class":203,"line":426},12,[201,428,369],{"class":238},[201,430,431],{"class":354},")\n",[201,433,435],{"class":203,"line":434},13,[201,436,330],{"emptyLinePlaceholder":329},[201,438,440],{"class":203,"line":439},14,[201,441,442],{"class":336},"\u002F\u002F 2. Private Write Operations\n",[201,444,446,448,450,453,455,457,460,462,465,468,470,472,474,476,479],{"class":203,"line":445},15,[201,447,343],{"class":246},[201,449,346],{"class":238},[201,451,452],{"class":354}," append ",[201,454,369],{"class":238},[201,456,372],{"class":238},[201,458,459],{"class":379}," useGSheetWrite",[201,461,394],{"class":354},[201,463,464],{"class":238},"{",[201,466,467],{"class":242}," sheet",[201,469,190],{"class":238},[201,471,417],{"class":238},[201,473,420],{"class":259},[201,475,397],{"class":238},[201,477,478],{"class":238}," }",[201,480,431],{"class":354},[201,482,484],{"class":203,"line":483},16,[201,485,330],{"emptyLinePlaceholder":329},[201,487,489,491,494,496,499,501,504],{"class":203,"line":488},17,[201,490,343],{"class":246},[201,492,493],{"class":354}," name ",[201,495,253],{"class":238},[201,497,498],{"class":379}," ref",[201,500,394],{"class":354},[201,502,503],{"class":238},"''",[201,505,431],{"class":354},[201,507,509,511,514,516,518,520,522,525,527],{"class":203,"line":508},18,[201,510,343],{"class":246},[201,512,513],{"class":354}," department ",[201,515,253],{"class":238},[201,517,498],{"class":379},[201,519,394],{"class":354},[201,521,397],{"class":238},[201,523,524],{"class":259},"Engineering",[201,526,397],{"class":238},[201,528,431],{"class":354},[201,530,532,534,537,539,541,543,545,548,550],{"class":203,"line":531},19,[201,533,343],{"class":246},[201,535,536],{"class":354}," salary ",[201,538,253],{"class":238},[201,540,498],{"class":379},[201,542,394],{"class":354},[201,544,397],{"class":238},[201,546,547],{"class":259},"85000",[201,549,397],{"class":238},[201,551,431],{"class":354},[201,553,555],{"class":203,"line":554},20,[201,556,330],{"emptyLinePlaceholder":329},[201,558,560,562,565,567,570,573,576],{"class":203,"line":559},21,[201,561,343],{"class":246},[201,563,564],{"class":354}," addEmployee ",[201,566,253],{"class":238},[201,568,569],{"class":246}," async",[201,571,572],{"class":238}," ()",[201,574,575],{"class":246}," =>",[201,577,277],{"class":238},[201,579,581,584,587,590,593,595,598,601],{"class":203,"line":580},22,[201,582,583],{"class":375},"  if",[201,585,586],{"class":242}," (",[201,588,589],{"class":238},"!",[201,591,592],{"class":354},"name",[201,594,174],{"class":238},[201,596,597],{"class":354},"value",[201,599,600],{"class":242},") ",[201,602,603],{"class":375},"return\n",[201,605,607,610,613,615,617,620,622,624],{"class":203,"line":606},23,[201,608,609],{"class":375},"  await",[201,611,612],{"class":379}," append",[201,614,394],{"class":242},[201,616,397],{"class":238},[201,618,619],{"class":259},"A1:D1",[201,621,397],{"class":238},[201,623,358],{"class":238},[201,625,626],{"class":242}," [\n",[201,628,630,633,636,639,642,645,647,650,653,656,658,661,663,665,667,670,672,674,676,679,681,683],{"class":203,"line":629},24,[201,631,632],{"class":242},"    [",[201,634,635],{"class":238},"`",[201,637,638],{"class":259},"EMP-",[201,640,641],{"class":238},"${",[201,643,644],{"class":354},"Date",[201,646,174],{"class":238},[201,648,649],{"class":379},"now",[201,651,652],{"class":354},"()",[201,654,655],{"class":238},"}`",[201,657,358],{"class":238},[201,659,660],{"class":354}," name",[201,662,174],{"class":238},[201,664,597],{"class":354},[201,666,358],{"class":238},[201,668,669],{"class":354}," department",[201,671,174],{"class":238},[201,673,597],{"class":354},[201,675,358],{"class":238},[201,677,678],{"class":354}," salary",[201,680,174],{"class":238},[201,682,597],{"class":354},[201,684,685],{"class":242},"]\n",[201,687,689],{"class":203,"line":688},25,[201,690,691],{"class":242},"  ])\n",[201,693,695,697,699,701,703],{"class":203,"line":694},26,[201,696,293],{"class":354},[201,698,174],{"class":238},[201,700,597],{"class":354},[201,702,372],{"class":238},[201,704,705],{"class":238}," ''\n",[201,707,709,711,714],{"class":203,"line":708},27,[201,710,609],{"class":375},[201,712,713],{"class":379}," refresh",[201,715,716],{"class":242},"()\n",[201,718,720],{"class":203,"line":719},28,[201,721,323],{"class":238},[201,723,725,728,730],{"class":203,"line":724},29,[201,726,727],{"class":238},"\u003C\u002F",[201,729,243],{"class":242},[201,731,265],{"class":238},[201,733,735],{"class":203,"line":734},30,[201,736,330],{"emptyLinePlaceholder":329},[201,738,740,742,745],{"class":203,"line":739},31,[201,741,239],{"class":238},[201,743,744],{"class":242},"template",[201,746,265],{"class":238},[201,748,750,753,756,759,761,763,766,768],{"class":203,"line":749},32,[201,751,752],{"class":238},"  \u003C",[201,754,755],{"class":242},"div",[201,757,758],{"class":246}," class",[201,760,253],{"class":238},[201,762,256],{"class":238},[201,764,765],{"class":259},"hr-portal",[201,767,256],{"class":238},[201,769,265],{"class":238},[201,771,773,776,779,781,784,786,788],{"class":203,"line":772},33,[201,774,775],{"class":238},"    \u003C",[201,777,778],{"class":242},"h1",[201,780,391],{"class":238},[201,782,783],{"class":354},"Enterprise HR & Payroll Portal",[201,785,727],{"class":238},[201,787,778],{"class":242},[201,789,265],{"class":238},[201,791,793],{"class":203,"line":792},34,[201,794,330],{"emptyLinePlaceholder":329},[201,796,798,800,803,806,808,810,813,815],{"class":203,"line":797},35,[201,799,775],{"class":238},[201,801,802],{"class":242},"form",[201,804,805],{"class":246}," @submit.prevent",[201,807,253],{"class":238},[201,809,256],{"class":238},[201,811,812],{"class":259},"addEmployee",[201,814,256],{"class":238},[201,816,265],{"class":238},[201,818,820,823],{"class":203,"line":819},36,[201,821,822],{"class":238},"      \u003C",[201,824,825],{"class":242},"input\n",[201,827,829,832,834,836,838],{"class":203,"line":828},37,[201,830,831],{"class":246},"        v-model",[201,833,253],{"class":238},[201,835,256],{"class":238},[201,837,592],{"class":259},[201,839,840],{"class":238},"\"\n",[201,842,844,847,849,851,854],{"class":203,"line":843},38,[201,845,846],{"class":246},"        placeholder",[201,848,253],{"class":238},[201,850,256],{"class":238},[201,852,853],{"class":259},"Employee Name",[201,855,840],{"class":238},[201,857,859],{"class":203,"line":858},39,[201,860,861],{"class":246},"        required\n",[201,863,865],{"class":203,"line":864},40,[201,866,867],{"class":238},"      >\n",[201,869,871,873,876,879,881,883,886,888],{"class":203,"line":870},41,[201,872,822],{"class":238},[201,874,875],{"class":242},"select",[201,877,878],{"class":246}," v-model",[201,880,253],{"class":238},[201,882,256],{"class":238},[201,884,885],{"class":259},"department",[201,887,256],{"class":238},[201,889,265],{"class":238},[201,891,893,896,899,902,904,906,908,910],{"class":203,"line":892},42,[201,894,895],{"class":238},"        \u003C",[201,897,898],{"class":242},"option",[201,900,901],{"class":246}," value",[201,903,253],{"class":238},[201,905,256],{"class":238},[201,907,524],{"class":259},[201,909,256],{"class":238},[201,911,265],{"class":238},[201,913,915],{"class":203,"line":914},43,[201,916,917],{"class":354},"          Engineering\n",[201,919,921,924,926],{"class":203,"line":920},44,[201,922,923],{"class":238},"        \u003C\u002F",[201,925,898],{"class":242},[201,927,265],{"class":238},[201,929,931,933,935,937,939,941,944,946],{"class":203,"line":930},45,[201,932,895],{"class":238},[201,934,898],{"class":242},[201,936,901],{"class":246},[201,938,253],{"class":238},[201,940,256],{"class":238},[201,942,943],{"class":259},"Marketing",[201,945,256],{"class":238},[201,947,265],{"class":238},[201,949,951],{"class":203,"line":950},46,[201,952,953],{"class":354},"          Marketing\n",[201,955,957,959,961],{"class":203,"line":956},47,[201,958,923],{"class":238},[201,960,898],{"class":242},[201,962,265],{"class":238},[201,964,966,969,971],{"class":203,"line":965},48,[201,967,968],{"class":238},"      \u003C\u002F",[201,970,875],{"class":242},[201,972,265],{"class":238},[201,974,976,978],{"class":203,"line":975},49,[201,977,822],{"class":238},[201,979,825],{"class":242},[201,981,983,985,987,989,992],{"class":203,"line":982},50,[201,984,831],{"class":246},[201,986,253],{"class":238},[201,988,256],{"class":238},[201,990,991],{"class":259},"salary",[201,993,840],{"class":238},[201,995,997,999,1001,1003,1006],{"class":203,"line":996},51,[201,998,846],{"class":246},[201,1000,253],{"class":238},[201,1002,256],{"class":238},[201,1004,1005],{"class":259},"Salary",[201,1007,840],{"class":238},[201,1009,1011],{"class":203,"line":1010},52,[201,1012,861],{"class":246},[201,1014,1016],{"class":203,"line":1015},53,[201,1017,867],{"class":238},[201,1019,1021,1023,1026,1029,1031,1033,1036,1038],{"class":203,"line":1020},54,[201,1022,822],{"class":238},[201,1024,1025],{"class":242},"button",[201,1027,1028],{"class":246}," type",[201,1030,253],{"class":238},[201,1032,256],{"class":238},[201,1034,1035],{"class":259},"submit",[201,1037,256],{"class":238},[201,1039,265],{"class":238},[201,1041,1043],{"class":203,"line":1042},55,[201,1044,1045],{"class":354},"        Add Employee\n",[201,1047,1049,1051,1053],{"class":203,"line":1048},56,[201,1050,968],{"class":238},[201,1052,1025],{"class":242},[201,1054,265],{"class":238},[201,1056,1058,1061,1063],{"class":203,"line":1057},57,[201,1059,1060],{"class":238},"    \u003C\u002F",[201,1062,802],{"class":242},[201,1064,265],{"class":238},[201,1066,1068],{"class":203,"line":1067},58,[201,1069,330],{"emptyLinePlaceholder":329},[201,1071,1073,1075,1077,1080,1082,1084,1087,1089],{"class":203,"line":1072},59,[201,1074,775],{"class":238},[201,1076,755],{"class":242},[201,1078,1079],{"class":246}," v-if",[201,1081,253],{"class":238},[201,1083,256],{"class":238},[201,1085,1086],{"class":259},"pending",[201,1088,256],{"class":238},[201,1090,265],{"class":238},[201,1092,1094],{"class":203,"line":1093},60,[201,1095,1096],{"class":354},"      Authenticating JWT & loading private records...\n",[201,1098,1100,1102,1104],{"class":203,"line":1099},61,[201,1101,1060],{"class":238},[201,1103,755],{"class":242},[201,1105,265],{"class":238},[201,1107,1109,1111,1114,1117],{"class":203,"line":1108},62,[201,1110,775],{"class":238},[201,1112,1113],{"class":242},"table",[201,1115,1116],{"class":246}," v-else",[201,1118,265],{"class":238},[201,1120,1122,1124,1127],{"class":203,"line":1121},63,[201,1123,822],{"class":238},[201,1125,1126],{"class":242},"thead",[201,1128,265],{"class":238},[201,1130,1132,1134,1137],{"class":203,"line":1131},64,[201,1133,895],{"class":238},[201,1135,1136],{"class":242},"tr",[201,1138,265],{"class":238},[201,1140,1142,1145,1148,1150,1153,1155,1157],{"class":203,"line":1141},65,[201,1143,1144],{"class":238},"          \u003C",[201,1146,1147],{"class":242},"th",[201,1149,391],{"class":238},[201,1151,1152],{"class":354},"ID",[201,1154,727],{"class":238},[201,1156,1147],{"class":242},[201,1158,265],{"class":238},[201,1160,1162,1164,1166,1168,1171,1173,1175],{"class":203,"line":1161},66,[201,1163,1144],{"class":238},[201,1165,1147],{"class":242},[201,1167,391],{"class":238},[201,1169,1170],{"class":354},"Name",[201,1172,727],{"class":238},[201,1174,1147],{"class":242},[201,1176,265],{"class":238},[201,1178,1180,1182,1184,1186,1189,1191,1193],{"class":203,"line":1179},67,[201,1181,1144],{"class":238},[201,1183,1147],{"class":242},[201,1185,391],{"class":238},[201,1187,1188],{"class":354},"Dept",[201,1190,727],{"class":238},[201,1192,1147],{"class":242},[201,1194,265],{"class":238},[201,1196,1198,1200,1202,1204,1206,1208,1210],{"class":203,"line":1197},68,[201,1199,1144],{"class":238},[201,1201,1147],{"class":242},[201,1203,391],{"class":238},[201,1205,1005],{"class":354},[201,1207,727],{"class":238},[201,1209,1147],{"class":242},[201,1211,265],{"class":238},[201,1213,1215,1217,1219],{"class":203,"line":1214},69,[201,1216,923],{"class":238},[201,1218,1136],{"class":242},[201,1220,265],{"class":238},[201,1222,1224,1226,1228],{"class":203,"line":1223},70,[201,1225,968],{"class":238},[201,1227,1126],{"class":242},[201,1229,265],{"class":238},[201,1231,1233,1235,1238],{"class":203,"line":1232},71,[201,1234,822],{"class":238},[201,1236,1237],{"class":242},"tbody",[201,1239,265],{"class":238},[201,1241,1243,1245],{"class":203,"line":1242},72,[201,1244,895],{"class":238},[201,1246,1247],{"class":242},"tr\n",[201,1249,1251,1254,1256,1258,1261],{"class":203,"line":1250},73,[201,1252,1253],{"class":246},"          v-for",[201,1255,253],{"class":238},[201,1257,256],{"class":238},[201,1259,1260],{"class":259},"emp in employees",[201,1262,840],{"class":238},[201,1264,1266,1269,1271,1273,1276],{"class":203,"line":1265},74,[201,1267,1268],{"class":246},"          :key",[201,1270,253],{"class":238},[201,1272,256],{"class":238},[201,1274,1275],{"class":259},"emp.empId",[201,1277,840],{"class":238},[201,1279,1281],{"class":203,"line":1280},75,[201,1282,1283],{"class":238},"        >\n",[201,1285,1287,1289,1292,1294,1297,1299,1301],{"class":203,"line":1286},76,[201,1288,1144],{"class":238},[201,1290,1291],{"class":242},"td",[201,1293,391],{"class":238},[201,1295,1296],{"class":354},"{{ emp.empId }}",[201,1298,727],{"class":238},[201,1300,1291],{"class":242},[201,1302,265],{"class":238},[201,1304,1306,1308,1310,1312,1315,1317,1319],{"class":203,"line":1305},77,[201,1307,1144],{"class":238},[201,1309,1291],{"class":242},[201,1311,391],{"class":238},[201,1313,1314],{"class":354},"{{ emp.name }}",[201,1316,727],{"class":238},[201,1318,1291],{"class":242},[201,1320,265],{"class":238},[201,1322,1324,1326,1328,1330,1333,1335,1337],{"class":203,"line":1323},78,[201,1325,1144],{"class":238},[201,1327,1291],{"class":242},[201,1329,391],{"class":238},[201,1331,1332],{"class":354},"{{ emp.department }}",[201,1334,727],{"class":238},[201,1336,1291],{"class":242},[201,1338,265],{"class":238},[201,1340,1342,1344,1346,1348,1351,1353,1355],{"class":203,"line":1341},79,[201,1343,1144],{"class":238},[201,1345,1291],{"class":242},[201,1347,391],{"class":238},[201,1349,1350],{"class":354},"${{ emp.salary }}",[201,1352,727],{"class":238},[201,1354,1291],{"class":242},[201,1356,265],{"class":238},[201,1358,1360,1362,1364],{"class":203,"line":1359},80,[201,1361,923],{"class":238},[201,1363,1136],{"class":242},[201,1365,265],{"class":238},[201,1367,1369,1371,1373],{"class":203,"line":1368},81,[201,1370,968],{"class":238},[201,1372,1237],{"class":242},[201,1374,265],{"class":238},[201,1376,1378,1380,1382],{"class":203,"line":1377},82,[201,1379,1060],{"class":238},[201,1381,1113],{"class":242},[201,1383,265],{"class":238},[201,1385,1387,1390,1392],{"class":203,"line":1386},83,[201,1388,1389],{"class":238},"  \u003C\u002F",[201,1391,755],{"class":242},[201,1393,265],{"class":238},[201,1395,1397,1399,1401],{"class":203,"line":1396},84,[201,1398,727],{"class":238},[201,1400,744],{"class":242},[201,1402,265],{"class":238},[1404,1405,1406],"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 .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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":197,"searchDepth":204,"depth":210,"links":1408},[1409,1410],{"id":149,"depth":210,"text":150},{"id":224,"depth":210,"text":225},"Build a secure, private enterprise HR management app using Service Account credentials.","md",null,{},{"title":127,"description":1411},"iXd9vGg2VeFSMFYPJOKpgZYws-1zPpLZ9mYgpDdq_hE",[1418,1420],{"title":123,"path":124,"stem":125,"description":1419,"children":-1},"Build a public stock & inventory tracking system using GCP API Key.",{"title":131,"path":132,"stem":133,"description":1421,"children":-1},"Build a multi-sheet enterprise hub using sheets routing map aliases in nuxt.config.ts.",1786088231306]