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