[{"data":1,"prerenderedAt":1594},["ShallowReactive",2],{"navigation-id":3,"page-\u002Fid\u002Ftutorials\u002Fstep-by-step":133,"\u002Fid\u002Ftutorials\u002Fstep-by-step-surround":1589},[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":110,"body":135,"description":1583,"extension":1584,"icon":1585,"links":1585,"meta":1586,"navigation":1585,"path":111,"seo":1587,"stem":112,"__hash__":1588},"docs_id\u002Fid\u002F6.tutorials\u002F1.step-by-step.md",{"type":136,"value":137,"toc":1574},"minimark",[138,142,147,192,619,645,662,666,674,999,1006,1570],[139,140,141],"p",{},"Tutorial langkah demi langkah tentang cara mengatur Google Sheets, me-deploy Apps Script, mengonfigurasi kredensial GCP, dan membangun Portal Direktori Siswa & Manajemen Admin full-stack dengan Nuxt 3\u002F4.",[143,144,146],"h2",{"id":145},"langkah-1-buat-google-sheet-apps-script","Langkah 1: Buat Google Sheet & Apps Script",[148,149,150,166,181],"ol",{},[151,152,153,154,158,159,165],"li",{},"Buka Google Sheets -> Buat spreadsheet baru ",[155,156,157],"strong",{},"Portal Siswa"," -> Tab sheet ",[155,160,161],{},[162,163,164],"code",{},"students",".",[151,167,168,169,171,172,171,175,171,178,165],{},"Buat header di baris 1: ",[162,170,7],{},", ",[162,173,174],{},"name",[162,176,177],{},"email",[162,179,180],{},"grade",[151,182,183,184,187,188,191],{},"Buka ",[155,185,186],{},"Extensions"," -> ",[155,189,190],{},"Apps Script"," -> Tempelkan skrip backend berikut:",[193,194,200],"pre",{"className":195,"code":196,"filename":197,"language":198,"meta":199,"style":199},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","function doGet(e) {\n  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(e.parameter.sheet || 'students');\n  const values = sheet.getRange(e.parameter.range || 'A1:Z100').getValues();\n  return ContentService.createTextOutput(JSON.stringify(values)).setMimeType(ContentService.MimeType.JSON);\n}\n\nfunction doPost(e) {\n  const data = JSON.parse(e.postData.contents);\n  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(data.sheet || 'students');\n  if (data.values) data.values.forEach(r => sheet.appendRow(r));\n  return ContentService.createTextOutput(JSON.stringify({ success: true })).setMimeType(ContentService.MimeType.JSON);\n}\n","Code.gs","javascript","",[162,201,202,229,290,340,396,402,409,425,461,503,555,614],{"__ignoreMap":199},[203,204,207,211,215,219,223,226],"span",{"class":205,"line":206},"line",1,[203,208,210],{"class":209},"spNyl","function",[203,212,214],{"class":213},"s2Zo4"," doGet",[203,216,218],{"class":217},"sMK4o","(",[203,220,222],{"class":221},"sHdIc","e",[203,224,225],{"class":217},")",[203,227,228],{"class":217}," {\n",[203,230,232,235,239,242,245,247,250,254,256,259,261,263,265,268,270,273,276,279,282,285,287],{"class":205,"line":231},2,[203,233,234],{"class":209},"  const",[203,236,238],{"class":237},"sTEyZ"," sheet",[203,240,241],{"class":217}," =",[203,243,244],{"class":237}," SpreadsheetApp",[203,246,165],{"class":217},[203,248,249],{"class":213},"getActiveSpreadsheet",[203,251,253],{"class":252},"swJcz","()",[203,255,165],{"class":217},[203,257,258],{"class":213},"getSheetByName",[203,260,218],{"class":252},[203,262,222],{"class":237},[203,264,165],{"class":217},[203,266,267],{"class":237},"parameter",[203,269,165],{"class":217},[203,271,272],{"class":237},"sheet",[203,274,275],{"class":217}," ||",[203,277,278],{"class":217}," '",[203,280,164],{"class":281},"sfazB",[203,283,284],{"class":217},"'",[203,286,225],{"class":252},[203,288,289],{"class":217},";\n",[203,291,293,295,298,300,302,304,307,309,311,313,315,317,320,322,324,327,329,331,333,336,338],{"class":205,"line":292},3,[203,294,234],{"class":209},[203,296,297],{"class":237}," values",[203,299,241],{"class":217},[203,301,238],{"class":237},[203,303,165],{"class":217},[203,305,306],{"class":213},"getRange",[203,308,218],{"class":252},[203,310,222],{"class":237},[203,312,165],{"class":217},[203,314,267],{"class":237},[203,316,165],{"class":217},[203,318,319],{"class":237},"range",[203,321,275],{"class":217},[203,323,278],{"class":217},[203,325,326],{"class":281},"A1:Z100",[203,328,284],{"class":217},[203,330,225],{"class":252},[203,332,165],{"class":217},[203,334,335],{"class":213},"getValues",[203,337,253],{"class":252},[203,339,289],{"class":217},[203,341,343,347,350,352,355,357,360,362,365,367,370,373,375,378,380,383,385,388,390,392,394],{"class":205,"line":342},4,[203,344,346],{"class":345},"s7zQu","  return",[203,348,349],{"class":237}," ContentService",[203,351,165],{"class":217},[203,353,354],{"class":213},"createTextOutput",[203,356,218],{"class":252},[203,358,359],{"class":237},"JSON",[203,361,165],{"class":217},[203,363,364],{"class":213},"stringify",[203,366,218],{"class":252},[203,368,369],{"class":237},"values",[203,371,372],{"class":252},"))",[203,374,165],{"class":217},[203,376,377],{"class":213},"setMimeType",[203,379,218],{"class":252},[203,381,382],{"class":237},"ContentService",[203,384,165],{"class":217},[203,386,387],{"class":237},"MimeType",[203,389,165],{"class":217},[203,391,359],{"class":237},[203,393,225],{"class":252},[203,395,289],{"class":217},[203,397,399],{"class":205,"line":398},5,[203,400,401],{"class":217},"}\n",[203,403,405],{"class":205,"line":404},6,[203,406,408],{"emptyLinePlaceholder":407},true,"\n",[203,410,412,414,417,419,421,423],{"class":205,"line":411},7,[203,413,210],{"class":209},[203,415,416],{"class":213}," doPost",[203,418,218],{"class":217},[203,420,222],{"class":221},[203,422,225],{"class":217},[203,424,228],{"class":217},[203,426,428,430,433,435,438,440,443,445,447,449,452,454,457,459],{"class":205,"line":427},8,[203,429,234],{"class":209},[203,431,432],{"class":237}," data",[203,434,241],{"class":217},[203,436,437],{"class":237}," JSON",[203,439,165],{"class":217},[203,441,442],{"class":213},"parse",[203,444,218],{"class":252},[203,446,222],{"class":237},[203,448,165],{"class":217},[203,450,451],{"class":237},"postData",[203,453,165],{"class":217},[203,455,456],{"class":237},"contents",[203,458,225],{"class":252},[203,460,289],{"class":217},[203,462,464,466,468,470,472,474,476,478,480,482,484,487,489,491,493,495,497,499,501],{"class":205,"line":463},9,[203,465,234],{"class":209},[203,467,238],{"class":237},[203,469,241],{"class":217},[203,471,244],{"class":237},[203,473,165],{"class":217},[203,475,249],{"class":213},[203,477,253],{"class":252},[203,479,165],{"class":217},[203,481,258],{"class":213},[203,483,218],{"class":252},[203,485,486],{"class":237},"data",[203,488,165],{"class":217},[203,490,272],{"class":237},[203,492,275],{"class":217},[203,494,278],{"class":217},[203,496,164],{"class":281},[203,498,284],{"class":217},[203,500,225],{"class":252},[203,502,289],{"class":217},[203,504,506,509,512,514,516,518,521,523,525,527,529,532,534,537,540,542,544,547,549,551,553],{"class":205,"line":505},10,[203,507,508],{"class":345},"  if",[203,510,511],{"class":252}," (",[203,513,486],{"class":237},[203,515,165],{"class":217},[203,517,369],{"class":237},[203,519,520],{"class":252},") ",[203,522,486],{"class":237},[203,524,165],{"class":217},[203,526,369],{"class":237},[203,528,165],{"class":217},[203,530,531],{"class":213},"forEach",[203,533,218],{"class":252},[203,535,536],{"class":221},"r",[203,538,539],{"class":209}," =>",[203,541,238],{"class":237},[203,543,165],{"class":217},[203,545,546],{"class":213},"appendRow",[203,548,218],{"class":252},[203,550,536],{"class":237},[203,552,372],{"class":252},[203,554,289],{"class":217},[203,556,558,560,562,564,566,568,570,572,574,576,579,582,585,589,592,594,596,598,600,602,604,606,608,610,612],{"class":205,"line":557},11,[203,559,346],{"class":345},[203,561,349],{"class":237},[203,563,165],{"class":217},[203,565,354],{"class":213},[203,567,218],{"class":252},[203,569,359],{"class":237},[203,571,165],{"class":217},[203,573,364],{"class":213},[203,575,218],{"class":252},[203,577,578],{"class":217},"{",[203,580,581],{"class":252}," success",[203,583,584],{"class":217},":",[203,586,588],{"class":587},"sfNiH"," true",[203,590,591],{"class":217}," }",[203,593,372],{"class":252},[203,595,165],{"class":217},[203,597,377],{"class":213},[203,599,218],{"class":252},[203,601,382],{"class":237},[203,603,165],{"class":217},[203,605,387],{"class":237},[203,607,165],{"class":217},[203,609,359],{"class":237},[203,611,225],{"class":252},[203,613,289],{"class":217},[203,615,617],{"class":205,"line":616},12,[203,618,401],{"class":217},[148,620,621,639],{"start":342},[151,622,623,624,187,627,630,631,171,635,638],{},"Klik ",[155,625,626],{},"Deploy",[155,628,629],{},"New Deployment"," -> Web App (",[632,633,634],"em",{},"Execute as: Me",[632,636,637],{},"Access: Anyone",").",[151,640,641,642,584],{},"Salin URL ke ",[162,643,644],{},".env",[193,646,650],{"className":647,"code":648,"filename":644,"language":649,"meta":199,"style":199},"language-env shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","GSHEET_APPSCRIPT_URL=https:\u002F\u002Fscript.google.com\u002Fmacros\u002Fs\u002F...\u002Fexec\nADMIN_PASSWORD=passwordrahasia\n","env",[162,651,652,657],{"__ignoreMap":199},[203,653,654],{"class":205,"line":206},[203,655,656],{},"GSHEET_APPSCRIPT_URL=https:\u002F\u002Fscript.google.com\u002Fmacros\u002Fs\u002F...\u002Fexec\n",[203,658,659],{"class":205,"line":231},[203,660,661],{},"ADMIN_PASSWORD=passwordrahasia\n",[143,663,665],{"id":664},"langkah-2-bangun-halaman-aplikasi-nuxt","Langkah 2: Bangun Halaman Aplikasi Nuxt",[667,668,670,671,225],"h3",{"id":669},"direktori-publik-pagesindexvue","Direktori Publik (",[162,672,673],{},"pages\u002Findex.vue",[193,675,679],{"className":676,"code":677,"filename":673,"language":678,"meta":199,"style":199},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\ninterface Student { id: string; name: string; email: string; grade: string }\nconst { data: students, pending } = await useGSheetAsObject\u003CStudent[]>('A1:D50', { sheet: 'students' })\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Ch1>Direktori Siswa\u003C\u002Fh1>\n    \u003Cdiv v-if=\"pending\">Memuat data...\u003C\u002Fdiv>\n    \u003Cul v-else>\n      \u003Cli v-for=\"student in students\" :key=\"student.id\">\n        {{ student.name }} ({{ student.grade }}) - {{ student.email }}\n      \u003C\u002Fli>\n    \u003C\u002Ful>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","vue",[162,680,681,709,760,830,839,843,852,862,881,910,922,955,960,970,980,990],{"__ignoreMap":199},[203,682,683,686,689,692,695,698,701,704,706],{"class":205,"line":206},[203,684,685],{"class":217},"\u003C",[203,687,688],{"class":252},"script",[203,690,691],{"class":209}," setup",[203,693,694],{"class":209}," lang",[203,696,697],{"class":217},"=",[203,699,700],{"class":217},"\"",[203,702,703],{"class":281},"ts",[203,705,700],{"class":217},[203,707,708],{"class":217},">\n",[203,710,711,714,718,721,724,726,729,732,735,737,739,741,744,746,748,750,753,755,757],{"class":205,"line":231},[203,712,713],{"class":209},"interface",[203,715,717],{"class":716},"sBMFI"," Student",[203,719,720],{"class":217}," {",[203,722,723],{"class":252}," id",[203,725,584],{"class":217},[203,727,728],{"class":716}," string",[203,730,731],{"class":217},";",[203,733,734],{"class":252}," name",[203,736,584],{"class":217},[203,738,728],{"class":716},[203,740,731],{"class":217},[203,742,743],{"class":252}," email",[203,745,584],{"class":217},[203,747,728],{"class":716},[203,749,731],{"class":217},[203,751,752],{"class":252}," grade",[203,754,584],{"class":217},[203,756,728],{"class":716},[203,758,759],{"class":217}," }\n",[203,761,762,765,767,769,771,774,777,780,783,785,788,791,793,796,799,802,804,806,809,811,813,815,817,819,821,823,825,827],{"class":205,"line":292},[203,763,764],{"class":209},"const",[203,766,720],{"class":217},[203,768,432],{"class":252},[203,770,584],{"class":217},[203,772,773],{"class":237}," students",[203,775,776],{"class":217},",",[203,778,779],{"class":237}," pending ",[203,781,782],{"class":217},"}",[203,784,241],{"class":217},[203,786,787],{"class":345}," await",[203,789,790],{"class":213}," useGSheetAsObject",[203,792,685],{"class":217},[203,794,795],{"class":716},"Student",[203,797,798],{"class":237},"[]",[203,800,801],{"class":217},">",[203,803,218],{"class":237},[203,805,284],{"class":217},[203,807,808],{"class":281},"A1:D50",[203,810,284],{"class":217},[203,812,776],{"class":217},[203,814,720],{"class":217},[203,816,238],{"class":252},[203,818,584],{"class":217},[203,820,278],{"class":217},[203,822,164],{"class":281},[203,824,284],{"class":217},[203,826,591],{"class":217},[203,828,829],{"class":237},")\n",[203,831,832,835,837],{"class":205,"line":342},[203,833,834],{"class":217},"\u003C\u002F",[203,836,688],{"class":252},[203,838,708],{"class":217},[203,840,841],{"class":205,"line":398},[203,842,408],{"emptyLinePlaceholder":407},[203,844,845,847,850],{"class":205,"line":404},[203,846,685],{"class":217},[203,848,849],{"class":252},"template",[203,851,708],{"class":217},[203,853,854,857,860],{"class":205,"line":411},[203,855,856],{"class":217},"  \u003C",[203,858,859],{"class":252},"div",[203,861,708],{"class":217},[203,863,864,867,870,872,875,877,879],{"class":205,"line":427},[203,865,866],{"class":217},"    \u003C",[203,868,869],{"class":252},"h1",[203,871,801],{"class":217},[203,873,874],{"class":237},"Direktori Siswa",[203,876,834],{"class":217},[203,878,869],{"class":252},[203,880,708],{"class":217},[203,882,883,885,887,890,892,894,897,899,901,904,906,908],{"class":205,"line":463},[203,884,866],{"class":217},[203,886,859],{"class":252},[203,888,889],{"class":209}," v-if",[203,891,697],{"class":217},[203,893,700],{"class":217},[203,895,896],{"class":281},"pending",[203,898,700],{"class":217},[203,900,801],{"class":217},[203,902,903],{"class":237},"Memuat data...",[203,905,834],{"class":217},[203,907,859],{"class":252},[203,909,708],{"class":217},[203,911,912,914,917,920],{"class":205,"line":505},[203,913,866],{"class":217},[203,915,916],{"class":252},"ul",[203,918,919],{"class":209}," v-else",[203,921,708],{"class":217},[203,923,924,927,929,932,934,936,939,941,944,946,948,951,953],{"class":205,"line":557},[203,925,926],{"class":217},"      \u003C",[203,928,151],{"class":252},[203,930,931],{"class":209}," v-for",[203,933,697],{"class":217},[203,935,700],{"class":217},[203,937,938],{"class":281},"student in students",[203,940,700],{"class":217},[203,942,943],{"class":209}," :key",[203,945,697],{"class":217},[203,947,700],{"class":217},[203,949,950],{"class":281},"student.id",[203,952,700],{"class":217},[203,954,708],{"class":217},[203,956,957],{"class":205,"line":616},[203,958,959],{"class":237},"        {{ student.name }} ({{ student.grade }}) - {{ student.email }}\n",[203,961,963,966,968],{"class":205,"line":962},13,[203,964,965],{"class":217},"      \u003C\u002F",[203,967,151],{"class":252},[203,969,708],{"class":217},[203,971,973,976,978],{"class":205,"line":972},14,[203,974,975],{"class":217},"    \u003C\u002F",[203,977,916],{"class":252},[203,979,708],{"class":217},[203,981,983,986,988],{"class":205,"line":982},15,[203,984,985],{"class":217},"  \u003C\u002F",[203,987,859],{"class":252},[203,989,708],{"class":217},[203,991,993,995,997],{"class":205,"line":992},16,[203,994,834],{"class":217},[203,996,849],{"class":252},[203,998,708],{"class":217},[667,1000,1002,1003,225],{"id":1001},"portal-admin-pagesadminvue","Portal Admin (",[162,1004,1005],{},"pages\u002Fadmin.vue",[193,1007,1009],{"className":676,"code":1008,"filename":1005,"language":678,"meta":199,"style":199},"\u003Cscript setup lang=\"ts\">\nconst isAuthenticated = ref(false)\nconst password = ref('')\nconst name = ref('')\nconst email = ref('')\n\nconst { append } = useGSheetWrite({ sheet: 'students' })\n\nconst addStudent = async () => {\n  await append('A1:D1', [[String(Date.now()).slice(-4), name.value, email.value, 'Kelas 10']])\n  alert('Siswa berhasil ditambahkan ke Google Sheet!')\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Cform v-if=\"!isAuthenticated\" @submit.prevent=\"isAuthenticated = true\">\n      \u003Cinput v-model=\"password\" type=\"password\" placeholder=\"Password Admin\" required>\n      \u003Cbutton type=\"submit\">Login\u003C\u002Fbutton>\n    \u003C\u002Fform>\n\n    \u003Cform v-else @submit.prevent=\"addStudent\">\n      \u003Cinput v-model=\"name\" placeholder=\"Nama Siswa\" required>\n      \u003Cinput v-model=\"email\" type=\"email\" placeholder=\"Email\" required>\n      \u003Cbutton type=\"submit\">Tambah Siswa\u003C\u002Fbutton>\n    \u003C\u002Fform>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n",[162,1010,1011,1031,1050,1068,1085,1102,1106,1140,1144,1163,1246,1262,1266,1274,1278,1286,1294,1327,1375,1405,1414,1419,1441,1473,1515,1543,1552,1561],{"__ignoreMap":199},[203,1012,1013,1015,1017,1019,1021,1023,1025,1027,1029],{"class":205,"line":206},[203,1014,685],{"class":217},[203,1016,688],{"class":252},[203,1018,691],{"class":209},[203,1020,694],{"class":209},[203,1022,697],{"class":217},[203,1024,700],{"class":217},[203,1026,703],{"class":281},[203,1028,700],{"class":217},[203,1030,708],{"class":217},[203,1032,1033,1035,1038,1040,1043,1045,1048],{"class":205,"line":231},[203,1034,764],{"class":209},[203,1036,1037],{"class":237}," isAuthenticated ",[203,1039,697],{"class":217},[203,1041,1042],{"class":213}," ref",[203,1044,218],{"class":237},[203,1046,1047],{"class":587},"false",[203,1049,829],{"class":237},[203,1051,1052,1054,1057,1059,1061,1063,1066],{"class":205,"line":292},[203,1053,764],{"class":209},[203,1055,1056],{"class":237}," password ",[203,1058,697],{"class":217},[203,1060,1042],{"class":213},[203,1062,218],{"class":237},[203,1064,1065],{"class":217},"''",[203,1067,829],{"class":237},[203,1069,1070,1072,1075,1077,1079,1081,1083],{"class":205,"line":342},[203,1071,764],{"class":209},[203,1073,1074],{"class":237}," name ",[203,1076,697],{"class":217},[203,1078,1042],{"class":213},[203,1080,218],{"class":237},[203,1082,1065],{"class":217},[203,1084,829],{"class":237},[203,1086,1087,1089,1092,1094,1096,1098,1100],{"class":205,"line":398},[203,1088,764],{"class":209},[203,1090,1091],{"class":237}," email ",[203,1093,697],{"class":217},[203,1095,1042],{"class":213},[203,1097,218],{"class":237},[203,1099,1065],{"class":217},[203,1101,829],{"class":237},[203,1103,1104],{"class":205,"line":404},[203,1105,408],{"emptyLinePlaceholder":407},[203,1107,1108,1110,1112,1115,1117,1119,1122,1124,1126,1128,1130,1132,1134,1136,1138],{"class":205,"line":411},[203,1109,764],{"class":209},[203,1111,720],{"class":217},[203,1113,1114],{"class":237}," append ",[203,1116,782],{"class":217},[203,1118,241],{"class":217},[203,1120,1121],{"class":213}," useGSheetWrite",[203,1123,218],{"class":237},[203,1125,578],{"class":217},[203,1127,238],{"class":252},[203,1129,584],{"class":217},[203,1131,278],{"class":217},[203,1133,164],{"class":281},[203,1135,284],{"class":217},[203,1137,591],{"class":217},[203,1139,829],{"class":237},[203,1141,1142],{"class":205,"line":427},[203,1143,408],{"emptyLinePlaceholder":407},[203,1145,1146,1148,1151,1153,1156,1159,1161],{"class":205,"line":463},[203,1147,764],{"class":209},[203,1149,1150],{"class":237}," addStudent ",[203,1152,697],{"class":217},[203,1154,1155],{"class":209}," async",[203,1157,1158],{"class":217}," ()",[203,1160,539],{"class":209},[203,1162,228],{"class":217},[203,1164,1165,1168,1171,1173,1175,1178,1180,1182,1185,1188,1190,1193,1195,1198,1201,1203,1206,1208,1211,1215,1217,1219,1221,1223,1226,1228,1230,1232,1234,1236,1238,1241,1243],{"class":205,"line":505},[203,1166,1167],{"class":345},"  await",[203,1169,1170],{"class":213}," append",[203,1172,218],{"class":252},[203,1174,284],{"class":217},[203,1176,1177],{"class":281},"A1:D1",[203,1179,284],{"class":217},[203,1181,776],{"class":217},[203,1183,1184],{"class":252}," [[",[203,1186,1187],{"class":213},"String",[203,1189,218],{"class":252},[203,1191,1192],{"class":237},"Date",[203,1194,165],{"class":217},[203,1196,1197],{"class":213},"now",[203,1199,1200],{"class":252},"())",[203,1202,165],{"class":217},[203,1204,1205],{"class":213},"slice",[203,1207,218],{"class":252},[203,1209,1210],{"class":217},"-",[203,1212,1214],{"class":1213},"sbssI","4",[203,1216,225],{"class":252},[203,1218,776],{"class":217},[203,1220,734],{"class":237},[203,1222,165],{"class":217},[203,1224,1225],{"class":237},"value",[203,1227,776],{"class":217},[203,1229,743],{"class":237},[203,1231,165],{"class":217},[203,1233,1225],{"class":237},[203,1235,776],{"class":217},[203,1237,278],{"class":217},[203,1239,1240],{"class":281},"Kelas 10",[203,1242,284],{"class":217},[203,1244,1245],{"class":252},"]])\n",[203,1247,1248,1251,1253,1255,1258,1260],{"class":205,"line":557},[203,1249,1250],{"class":213},"  alert",[203,1252,218],{"class":252},[203,1254,284],{"class":217},[203,1256,1257],{"class":281},"Siswa berhasil ditambahkan ke Google Sheet!",[203,1259,284],{"class":217},[203,1261,829],{"class":252},[203,1263,1264],{"class":205,"line":616},[203,1265,401],{"class":217},[203,1267,1268,1270,1272],{"class":205,"line":962},[203,1269,834],{"class":217},[203,1271,688],{"class":252},[203,1273,708],{"class":217},[203,1275,1276],{"class":205,"line":972},[203,1277,408],{"emptyLinePlaceholder":407},[203,1279,1280,1282,1284],{"class":205,"line":982},[203,1281,685],{"class":217},[203,1283,849],{"class":252},[203,1285,708],{"class":217},[203,1287,1288,1290,1292],{"class":205,"line":992},[203,1289,856],{"class":217},[203,1291,859],{"class":252},[203,1293,708],{"class":217},[203,1295,1297,1299,1302,1304,1306,1308,1311,1313,1316,1318,1320,1323,1325],{"class":205,"line":1296},17,[203,1298,866],{"class":217},[203,1300,1301],{"class":252},"form",[203,1303,889],{"class":209},[203,1305,697],{"class":217},[203,1307,700],{"class":217},[203,1309,1310],{"class":281},"!isAuthenticated",[203,1312,700],{"class":217},[203,1314,1315],{"class":209}," @submit.prevent",[203,1317,697],{"class":217},[203,1319,700],{"class":217},[203,1321,1322],{"class":281},"isAuthenticated = true",[203,1324,700],{"class":217},[203,1326,708],{"class":217},[203,1328,1330,1332,1335,1338,1340,1342,1345,1347,1350,1352,1354,1356,1358,1361,1363,1365,1368,1370,1373],{"class":205,"line":1329},18,[203,1331,926],{"class":217},[203,1333,1334],{"class":252},"input",[203,1336,1337],{"class":209}," v-model",[203,1339,697],{"class":217},[203,1341,700],{"class":217},[203,1343,1344],{"class":281},"password",[203,1346,700],{"class":217},[203,1348,1349],{"class":209}," type",[203,1351,697],{"class":217},[203,1353,700],{"class":217},[203,1355,1344],{"class":281},[203,1357,700],{"class":217},[203,1359,1360],{"class":209}," placeholder",[203,1362,697],{"class":217},[203,1364,700],{"class":217},[203,1366,1367],{"class":281},"Password Admin",[203,1369,700],{"class":217},[203,1371,1372],{"class":209}," required",[203,1374,708],{"class":217},[203,1376,1378,1380,1383,1385,1387,1389,1392,1394,1396,1399,1401,1403],{"class":205,"line":1377},19,[203,1379,926],{"class":217},[203,1381,1382],{"class":252},"button",[203,1384,1349],{"class":209},[203,1386,697],{"class":217},[203,1388,700],{"class":217},[203,1390,1391],{"class":281},"submit",[203,1393,700],{"class":217},[203,1395,801],{"class":217},[203,1397,1398],{"class":237},"Login",[203,1400,834],{"class":217},[203,1402,1382],{"class":252},[203,1404,708],{"class":217},[203,1406,1408,1410,1412],{"class":205,"line":1407},20,[203,1409,975],{"class":217},[203,1411,1301],{"class":252},[203,1413,708],{"class":217},[203,1415,1417],{"class":205,"line":1416},21,[203,1418,408],{"emptyLinePlaceholder":407},[203,1420,1422,1424,1426,1428,1430,1432,1434,1437,1439],{"class":205,"line":1421},22,[203,1423,866],{"class":217},[203,1425,1301],{"class":252},[203,1427,919],{"class":209},[203,1429,1315],{"class":209},[203,1431,697],{"class":217},[203,1433,700],{"class":217},[203,1435,1436],{"class":281},"addStudent",[203,1438,700],{"class":217},[203,1440,708],{"class":217},[203,1442,1444,1446,1448,1450,1452,1454,1456,1458,1460,1462,1464,1467,1469,1471],{"class":205,"line":1443},23,[203,1445,926],{"class":217},[203,1447,1334],{"class":252},[203,1449,1337],{"class":209},[203,1451,697],{"class":217},[203,1453,700],{"class":217},[203,1455,174],{"class":281},[203,1457,700],{"class":217},[203,1459,1360],{"class":209},[203,1461,697],{"class":217},[203,1463,700],{"class":217},[203,1465,1466],{"class":281},"Nama Siswa",[203,1468,700],{"class":217},[203,1470,1372],{"class":209},[203,1472,708],{"class":217},[203,1474,1476,1478,1480,1482,1484,1486,1488,1490,1492,1494,1496,1498,1500,1502,1504,1506,1509,1511,1513],{"class":205,"line":1475},24,[203,1477,926],{"class":217},[203,1479,1334],{"class":252},[203,1481,1337],{"class":209},[203,1483,697],{"class":217},[203,1485,700],{"class":217},[203,1487,177],{"class":281},[203,1489,700],{"class":217},[203,1491,1349],{"class":209},[203,1493,697],{"class":217},[203,1495,700],{"class":217},[203,1497,177],{"class":281},[203,1499,700],{"class":217},[203,1501,1360],{"class":209},[203,1503,697],{"class":217},[203,1505,700],{"class":217},[203,1507,1508],{"class":281},"Email",[203,1510,700],{"class":217},[203,1512,1372],{"class":209},[203,1514,708],{"class":217},[203,1516,1518,1520,1522,1524,1526,1528,1530,1532,1534,1537,1539,1541],{"class":205,"line":1517},25,[203,1519,926],{"class":217},[203,1521,1382],{"class":252},[203,1523,1349],{"class":209},[203,1525,697],{"class":217},[203,1527,700],{"class":217},[203,1529,1391],{"class":281},[203,1531,700],{"class":217},[203,1533,801],{"class":217},[203,1535,1536],{"class":237},"Tambah Siswa",[203,1538,834],{"class":217},[203,1540,1382],{"class":252},[203,1542,708],{"class":217},[203,1544,1546,1548,1550],{"class":205,"line":1545},26,[203,1547,975],{"class":217},[203,1549,1301],{"class":252},[203,1551,708],{"class":217},[203,1553,1555,1557,1559],{"class":205,"line":1554},27,[203,1556,985],{"class":217},[203,1558,859],{"class":252},[203,1560,708],{"class":217},[203,1562,1564,1566,1568],{"class":205,"line":1563},28,[203,1565,834],{"class":217},[203,1567,849],{"class":252},[203,1569,708],{"class":217},[1571,1572,1573],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":199,"searchDepth":206,"depth":231,"links":1575},[1576,1577],{"id":145,"depth":231,"text":146},{"id":664,"depth":231,"text":665,"children":1578},[1579,1581],{"id":669,"depth":292,"text":1580},"Direktori Publik (pages\u002Findex.vue)",{"id":1001,"depth":292,"text":1582},"Portal Admin (pages\u002Fadmin.vue)","Tutorial end-to-end mencakup Apps Script, GCP Console, dan Admin Portal Nuxt.","md",null,{},{"title":110,"description":1583},"coRRy4LxGBeN9p7XvokQfky3yTQAR2VsRjKEp_aWq-0",[1590,1592],{"title":106,"path":107,"stem":108,"description":1591,"children":-1},"Bangun portal pengiriman feedback langsung menggunakan URL Google Apps Script Web App.",{"title":114,"path":115,"stem":116,"description":1593,"children":-1},"Bangun dashboard analitik penjualan dinamis dengan filter query SQL GViz.",1786088234471]