[{"data":1,"prerenderedAt":1827},["ShallowReactive",2],{"navigation-id":3,"page-\u002Fid\u002Ftutorials\u002Fappscript-tutorial":133,"\u002Fid\u002Ftutorials\u002Fappscript-tutorial-surround":1822},[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":106,"body":135,"description":1816,"extension":1817,"icon":1818,"links":1818,"meta":1819,"navigation":1818,"path":107,"seo":1820,"stem":108,"__hash__":1821},"docs_id\u002Fid\u002F6.tutorials\u002F1.appscript-tutorial.md",{"type":136,"value":137,"toc":1812},"minimark",[138,142,145,150,201,639,668,679,681,685,1808],[139,140,141],"p",{},"Pelajari cara membangun portal pengiriman feedback full-stack menggunakan Google Apps Script tanpa kredensial GCP atau batas kuota API.",[143,144],"hr",{},[146,147,149],"h2",{"id":148},"_1-setup-google-sheets-apps-script","1. Setup Google Sheets & Apps Script",[151,152,153,162,171,186],"ol",{},[154,155,156,157,161],"li",{},"Buat Google Sheet baru bernama ",[158,159,160],"strong",{},"Feedback Pengguna",".",[154,163,164,165,161],{},"Beri nama tab sheet ",[158,166,167],{},[168,169,170],"code",{},"feedback",[154,172,173,174,176,177,176,180,176,183,161],{},"Tambahkan header kolom di Baris 1: ",[168,175,7],{},", ",[168,178,179],{},"author",[168,181,182],{},"rating",[168,184,185],{},"comment",[154,187,188,189,192,193,196,197,200],{},"Buka ",[158,190,191],{},"Extensions"," -> ",[158,194,195],{},"Apps Script"," dan tempelkan skrip ",[168,198,199],{},"Code.gs",":",[202,203,208],"pre",{"className":204,"code":205,"filename":199,"language":206,"meta":207,"style":207},"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 || 'feedback');\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 || 'feedback');\n  if (data.values) {\n    data.values.forEach(r => sheet.appendRow(r));\n  }\n  return ContentService.createTextOutput(JSON.stringify({ success: true })).setMimeType(ContentService.MimeType.JSON);\n}\n","javascript","",[168,209,210,237,298,348,404,410,417,433,469,511,532,570,576,634],{"__ignoreMap":207},[211,212,215,219,223,227,231,234],"span",{"class":213,"line":214},"line",1,[211,216,218],{"class":217},"spNyl","function",[211,220,222],{"class":221},"s2Zo4"," doGet",[211,224,226],{"class":225},"sMK4o","(",[211,228,230],{"class":229},"sHdIc","e",[211,232,233],{"class":225},")",[211,235,236],{"class":225}," {\n",[211,238,240,243,247,250,253,255,258,262,264,267,269,271,273,276,278,281,284,287,290,293,295],{"class":213,"line":239},2,[211,241,242],{"class":217},"  const",[211,244,246],{"class":245},"sTEyZ"," sheet",[211,248,249],{"class":225}," =",[211,251,252],{"class":245}," SpreadsheetApp",[211,254,161],{"class":225},[211,256,257],{"class":221},"getActiveSpreadsheet",[211,259,261],{"class":260},"swJcz","()",[211,263,161],{"class":225},[211,265,266],{"class":221},"getSheetByName",[211,268,226],{"class":260},[211,270,230],{"class":245},[211,272,161],{"class":225},[211,274,275],{"class":245},"parameter",[211,277,161],{"class":225},[211,279,280],{"class":245},"sheet",[211,282,283],{"class":225}," ||",[211,285,286],{"class":225}," '",[211,288,170],{"class":289},"sfazB",[211,291,292],{"class":225},"'",[211,294,233],{"class":260},[211,296,297],{"class":225},";\n",[211,299,301,303,306,308,310,312,315,317,319,321,323,325,328,330,332,335,337,339,341,344,346],{"class":213,"line":300},3,[211,302,242],{"class":217},[211,304,305],{"class":245}," values",[211,307,249],{"class":225},[211,309,246],{"class":245},[211,311,161],{"class":225},[211,313,314],{"class":221},"getRange",[211,316,226],{"class":260},[211,318,230],{"class":245},[211,320,161],{"class":225},[211,322,275],{"class":245},[211,324,161],{"class":225},[211,326,327],{"class":245},"range",[211,329,283],{"class":225},[211,331,286],{"class":225},[211,333,334],{"class":289},"A1:Z100",[211,336,292],{"class":225},[211,338,233],{"class":260},[211,340,161],{"class":225},[211,342,343],{"class":221},"getValues",[211,345,261],{"class":260},[211,347,297],{"class":225},[211,349,351,355,358,360,363,365,368,370,373,375,378,381,383,386,388,391,393,396,398,400,402],{"class":213,"line":350},4,[211,352,354],{"class":353},"s7zQu","  return",[211,356,357],{"class":245}," ContentService",[211,359,161],{"class":225},[211,361,362],{"class":221},"createTextOutput",[211,364,226],{"class":260},[211,366,367],{"class":245},"JSON",[211,369,161],{"class":225},[211,371,372],{"class":221},"stringify",[211,374,226],{"class":260},[211,376,377],{"class":245},"values",[211,379,380],{"class":260},"))",[211,382,161],{"class":225},[211,384,385],{"class":221},"setMimeType",[211,387,226],{"class":260},[211,389,390],{"class":245},"ContentService",[211,392,161],{"class":225},[211,394,395],{"class":245},"MimeType",[211,397,161],{"class":225},[211,399,367],{"class":245},[211,401,233],{"class":260},[211,403,297],{"class":225},[211,405,407],{"class":213,"line":406},5,[211,408,409],{"class":225},"}\n",[211,411,413],{"class":213,"line":412},6,[211,414,416],{"emptyLinePlaceholder":415},true,"\n",[211,418,420,422,425,427,429,431],{"class":213,"line":419},7,[211,421,218],{"class":217},[211,423,424],{"class":221}," doPost",[211,426,226],{"class":225},[211,428,230],{"class":229},[211,430,233],{"class":225},[211,432,236],{"class":225},[211,434,436,438,441,443,446,448,451,453,455,457,460,462,465,467],{"class":213,"line":435},8,[211,437,242],{"class":217},[211,439,440],{"class":245}," data",[211,442,249],{"class":225},[211,444,445],{"class":245}," JSON",[211,447,161],{"class":225},[211,449,450],{"class":221},"parse",[211,452,226],{"class":260},[211,454,230],{"class":245},[211,456,161],{"class":225},[211,458,459],{"class":245},"postData",[211,461,161],{"class":225},[211,463,464],{"class":245},"contents",[211,466,233],{"class":260},[211,468,297],{"class":225},[211,470,472,474,476,478,480,482,484,486,488,490,492,495,497,499,501,503,505,507,509],{"class":213,"line":471},9,[211,473,242],{"class":217},[211,475,246],{"class":245},[211,477,249],{"class":225},[211,479,252],{"class":245},[211,481,161],{"class":225},[211,483,257],{"class":221},[211,485,261],{"class":260},[211,487,161],{"class":225},[211,489,266],{"class":221},[211,491,226],{"class":260},[211,493,494],{"class":245},"data",[211,496,161],{"class":225},[211,498,280],{"class":245},[211,500,283],{"class":225},[211,502,286],{"class":225},[211,504,170],{"class":289},[211,506,292],{"class":225},[211,508,233],{"class":260},[211,510,297],{"class":225},[211,512,514,517,520,522,524,526,529],{"class":213,"line":513},10,[211,515,516],{"class":353},"  if",[211,518,519],{"class":260}," (",[211,521,494],{"class":245},[211,523,161],{"class":225},[211,525,377],{"class":245},[211,527,528],{"class":260},") ",[211,530,531],{"class":225},"{\n",[211,533,535,538,540,542,544,547,549,552,555,557,559,562,564,566,568],{"class":213,"line":534},11,[211,536,537],{"class":245},"    data",[211,539,161],{"class":225},[211,541,377],{"class":245},[211,543,161],{"class":225},[211,545,546],{"class":221},"forEach",[211,548,226],{"class":260},[211,550,551],{"class":229},"r",[211,553,554],{"class":217}," =>",[211,556,246],{"class":245},[211,558,161],{"class":225},[211,560,561],{"class":221},"appendRow",[211,563,226],{"class":260},[211,565,551],{"class":245},[211,567,380],{"class":260},[211,569,297],{"class":225},[211,571,573],{"class":213,"line":572},12,[211,574,575],{"class":225},"  }\n",[211,577,579,581,583,585,587,589,591,593,595,597,600,603,605,609,612,614,616,618,620,622,624,626,628,630,632],{"class":213,"line":578},13,[211,580,354],{"class":353},[211,582,357],{"class":245},[211,584,161],{"class":225},[211,586,362],{"class":221},[211,588,226],{"class":260},[211,590,367],{"class":245},[211,592,161],{"class":225},[211,594,372],{"class":221},[211,596,226],{"class":260},[211,598,599],{"class":225},"{",[211,601,602],{"class":260}," success",[211,604,200],{"class":225},[211,606,608],{"class":607},"sfNiH"," true",[211,610,611],{"class":225}," }",[211,613,380],{"class":260},[211,615,161],{"class":225},[211,617,385],{"class":221},[211,619,226],{"class":260},[211,621,390],{"class":245},[211,623,161],{"class":225},[211,625,395],{"class":245},[211,627,161],{"class":225},[211,629,367],{"class":245},[211,631,233],{"class":260},[211,633,297],{"class":225},[211,635,637],{"class":213,"line":636},14,[211,638,409],{"class":225},[151,640,641,662],{"start":406},[154,642,643,644,192,647,650,651,519,654,176,658,661],{},"Klik ",[158,645,646],{},"Deploy",[158,648,649],{},"New Deployment"," -> Pilih ",[158,652,653],{},"Web App",[655,656,657],"em",{},"Execute as: Me",[655,659,660],{},"Who has access: Anyone",").",[154,663,664,665,200],{},"Salin URL Web App ke dalam file ",[168,666,667],{},".env",[202,669,673],{"className":670,"code":671,"filename":667,"language":672,"meta":207,"style":207},"language-env shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","GSHEET_APPSCRIPT_URL=https:\u002F\u002Fscript.google.com\u002Fmacros\u002Fs\u002FAKfycb...\u002Fexec\n","env",[168,674,675],{"__ignoreMap":207},[211,676,677],{"class":213,"line":214},[211,678,671],{},[143,680],{},[146,682,684],{"id":683},"_2-implementasi-komponen-vue","2. Implementasi Komponen Vue",[202,686,691],{"className":687,"code":688,"filename":689,"language":690,"meta":207,"style":207},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\ninterface FeedbackItem {\n  id: string\n  author: string\n  rating: string\n  comment: string\n}\n\n\u002F\u002F 1. Baca Data\nconst { data: items, pending, refresh } = await useGSheetAsObject\u003CFeedbackItem[]>('A1:D50', {\n  sheet: 'feedback'\n})\n\n\u002F\u002F 2. Tulis Data\nconst { append } = useGSheetWrite({ sheet: 'feedback' })\n\nconst author = ref('')\nconst rating = ref('5')\nconst comment = ref('')\nconst isSaving = ref(false)\n\nconst submitComment = async () => {\n  if (!author.value || !comment.value) return\n  isSaving.value = true\n\n  try {\n    await append('A1:D1', [\n      [String(Date.now()), author.value, rating.value, comment.value]\n    ])\n    author.value = ''\n    comment.value = ''\n    await refresh()\n  }\n  finally {\n    isSaving.value = false\n  }\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv class=\"feedback-page\">\n    \u003Ch1>Kirim Feedback Pengguna\u003C\u002Fh1>\n\n    \u003Cform @submit.prevent=\"submitComment\">\n      \u003Cinput\n        v-model=\"author\"\n        placeholder=\"Nama Kamu\"\n        required\n      >\n      \u003Cselect v-model=\"rating\">\n        \u003Coption value=\"5\">\n          5 Bintang\n        \u003C\u002Foption>\n        \u003Coption value=\"4\">\n          4 Bintang\n        \u003C\u002Foption>\n        \u003Coption value=\"3\">\n          3 Bintang\n        \u003C\u002Foption>\n      \u003C\u002Fselect>\n      \u003Ctextarea\n        v-model=\"comment\"\n        placeholder=\"Komentar \u002F Masukan\"\n        required\n      \u002F>\n      \u003Cbutton\n        :disabled=\"isSaving\"\n        type=\"submit\"\n      >\n        {{ isSaving ? 'Sending...' : 'Kirim Feedback' }}\n      \u003C\u002Fbutton>\n    \u003C\u002Fform>\n\n    \u003Chr>\n\n    \u003Cdiv v-if=\"pending\">\n      Memuat komentar...\n    \u003C\u002Fdiv>\n    \u003Cul v-else>\n      \u003Cli\n        v-for=\"item in items\"\n        :key=\"item.id\"\n      >\n        \u003Cstrong>{{ item.author }}\u003C\u002Fstrong> ({{ item.rating }} Bintang): {{ item.comment }}\n      \u003C\u002Fli>\n    \u003C\u002Ful>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","pages\u002Ffeedback.vue","vue",[168,692,693,721,732,742,751,760,769,773,777,783,844,858,865,869,874,909,914,934,957,975,994,999,1019,1052,1067,1072,1080,1103,1155,1161,1176,1190,1201,1206,1214,1229,1234,1239,1249,1254,1264,1287,1307,1312,1334,1343,1358,1373,1379,1385,1406,1428,1434,1444,1464,1470,1479,1499,1505,1514,1524,1532,1545,1559,1564,1570,1578,1593,1608,1613,1619,1629,1639,1644,1653,1658,1679,1685,1694,1707,1715,1730,1745,1750,1771,1780,1789,1799],{"__ignoreMap":207},[211,694,695,698,701,704,707,710,713,716,718],{"class":213,"line":214},[211,696,697],{"class":225},"\u003C",[211,699,700],{"class":260},"script",[211,702,703],{"class":217}," setup",[211,705,706],{"class":217}," lang",[211,708,709],{"class":225},"=",[211,711,712],{"class":225},"\"",[211,714,715],{"class":289},"ts",[211,717,712],{"class":225},[211,719,720],{"class":225},">\n",[211,722,723,726,730],{"class":213,"line":239},[211,724,725],{"class":217},"interface",[211,727,729],{"class":728},"sBMFI"," FeedbackItem",[211,731,236],{"class":225},[211,733,734,737,739],{"class":213,"line":300},[211,735,736],{"class":260},"  id",[211,738,200],{"class":225},[211,740,741],{"class":728}," string\n",[211,743,744,747,749],{"class":213,"line":350},[211,745,746],{"class":260},"  author",[211,748,200],{"class":225},[211,750,741],{"class":728},[211,752,753,756,758],{"class":213,"line":406},[211,754,755],{"class":260},"  rating",[211,757,200],{"class":225},[211,759,741],{"class":728},[211,761,762,765,767],{"class":213,"line":412},[211,763,764],{"class":260},"  comment",[211,766,200],{"class":225},[211,768,741],{"class":728},[211,770,771],{"class":213,"line":419},[211,772,409],{"class":225},[211,774,775],{"class":213,"line":435},[211,776,416],{"emptyLinePlaceholder":415},[211,778,779],{"class":213,"line":471},[211,780,782],{"class":781},"sHwdD","\u002F\u002F 1. Baca Data\n",[211,784,785,788,791,793,795,798,801,804,806,809,812,814,817,820,822,825,828,831,833,835,838,840,842],{"class":213,"line":513},[211,786,787],{"class":217},"const",[211,789,790],{"class":225}," {",[211,792,440],{"class":260},[211,794,200],{"class":225},[211,796,797],{"class":245}," items",[211,799,800],{"class":225},",",[211,802,803],{"class":245}," pending",[211,805,800],{"class":225},[211,807,808],{"class":245}," refresh ",[211,810,811],{"class":225},"}",[211,813,249],{"class":225},[211,815,816],{"class":353}," await",[211,818,819],{"class":221}," useGSheetAsObject",[211,821,697],{"class":225},[211,823,824],{"class":728},"FeedbackItem",[211,826,827],{"class":245},"[]",[211,829,830],{"class":225},">",[211,832,226],{"class":245},[211,834,292],{"class":225},[211,836,837],{"class":289},"A1:D50",[211,839,292],{"class":225},[211,841,800],{"class":225},[211,843,236],{"class":225},[211,845,846,849,851,853,855],{"class":213,"line":534},[211,847,848],{"class":260},"  sheet",[211,850,200],{"class":225},[211,852,286],{"class":225},[211,854,170],{"class":289},[211,856,857],{"class":225},"'\n",[211,859,860,862],{"class":213,"line":572},[211,861,811],{"class":225},[211,863,864],{"class":245},")\n",[211,866,867],{"class":213,"line":578},[211,868,416],{"emptyLinePlaceholder":415},[211,870,871],{"class":213,"line":636},[211,872,873],{"class":781},"\u002F\u002F 2. Tulis Data\n",[211,875,877,879,881,884,886,888,891,893,895,897,899,901,903,905,907],{"class":213,"line":876},15,[211,878,787],{"class":217},[211,880,790],{"class":225},[211,882,883],{"class":245}," append ",[211,885,811],{"class":225},[211,887,249],{"class":225},[211,889,890],{"class":221}," useGSheetWrite",[211,892,226],{"class":245},[211,894,599],{"class":225},[211,896,246],{"class":260},[211,898,200],{"class":225},[211,900,286],{"class":225},[211,902,170],{"class":289},[211,904,292],{"class":225},[211,906,611],{"class":225},[211,908,864],{"class":245},[211,910,912],{"class":213,"line":911},16,[211,913,416],{"emptyLinePlaceholder":415},[211,915,917,919,922,924,927,929,932],{"class":213,"line":916},17,[211,918,787],{"class":217},[211,920,921],{"class":245}," author ",[211,923,709],{"class":225},[211,925,926],{"class":221}," ref",[211,928,226],{"class":245},[211,930,931],{"class":225},"''",[211,933,864],{"class":245},[211,935,937,939,942,944,946,948,950,953,955],{"class":213,"line":936},18,[211,938,787],{"class":217},[211,940,941],{"class":245}," rating ",[211,943,709],{"class":225},[211,945,926],{"class":221},[211,947,226],{"class":245},[211,949,292],{"class":225},[211,951,952],{"class":289},"5",[211,954,292],{"class":225},[211,956,864],{"class":245},[211,958,960,962,965,967,969,971,973],{"class":213,"line":959},19,[211,961,787],{"class":217},[211,963,964],{"class":245}," comment ",[211,966,709],{"class":225},[211,968,926],{"class":221},[211,970,226],{"class":245},[211,972,931],{"class":225},[211,974,864],{"class":245},[211,976,978,980,983,985,987,989,992],{"class":213,"line":977},20,[211,979,787],{"class":217},[211,981,982],{"class":245}," isSaving ",[211,984,709],{"class":225},[211,986,926],{"class":221},[211,988,226],{"class":245},[211,990,991],{"class":607},"false",[211,993,864],{"class":245},[211,995,997],{"class":213,"line":996},21,[211,998,416],{"emptyLinePlaceholder":415},[211,1000,1002,1004,1007,1009,1012,1015,1017],{"class":213,"line":1001},22,[211,1003,787],{"class":217},[211,1005,1006],{"class":245}," submitComment ",[211,1008,709],{"class":225},[211,1010,1011],{"class":217}," async",[211,1013,1014],{"class":225}," ()",[211,1016,554],{"class":217},[211,1018,236],{"class":225},[211,1020,1022,1024,1026,1029,1031,1033,1036,1038,1041,1043,1045,1047,1049],{"class":213,"line":1021},23,[211,1023,516],{"class":353},[211,1025,519],{"class":260},[211,1027,1028],{"class":225},"!",[211,1030,179],{"class":245},[211,1032,161],{"class":225},[211,1034,1035],{"class":245},"value",[211,1037,283],{"class":225},[211,1039,1040],{"class":225}," !",[211,1042,185],{"class":245},[211,1044,161],{"class":225},[211,1046,1035],{"class":245},[211,1048,528],{"class":260},[211,1050,1051],{"class":353},"return\n",[211,1053,1055,1058,1060,1062,1064],{"class":213,"line":1054},24,[211,1056,1057],{"class":245},"  isSaving",[211,1059,161],{"class":225},[211,1061,1035],{"class":245},[211,1063,249],{"class":225},[211,1065,1066],{"class":607}," true\n",[211,1068,1070],{"class":213,"line":1069},25,[211,1071,416],{"emptyLinePlaceholder":415},[211,1073,1075,1078],{"class":213,"line":1074},26,[211,1076,1077],{"class":353},"  try",[211,1079,236],{"class":225},[211,1081,1083,1086,1089,1091,1093,1096,1098,1100],{"class":213,"line":1082},27,[211,1084,1085],{"class":353},"    await",[211,1087,1088],{"class":221}," append",[211,1090,226],{"class":260},[211,1092,292],{"class":225},[211,1094,1095],{"class":289},"A1:D1",[211,1097,292],{"class":225},[211,1099,800],{"class":225},[211,1101,1102],{"class":260}," [\n",[211,1104,1106,1109,1112,1114,1117,1119,1122,1125,1127,1130,1132,1134,1136,1139,1141,1143,1145,1148,1150,1152],{"class":213,"line":1105},28,[211,1107,1108],{"class":260},"      [",[211,1110,1111],{"class":221},"String",[211,1113,226],{"class":260},[211,1115,1116],{"class":245},"Date",[211,1118,161],{"class":225},[211,1120,1121],{"class":221},"now",[211,1123,1124],{"class":260},"())",[211,1126,800],{"class":225},[211,1128,1129],{"class":245}," author",[211,1131,161],{"class":225},[211,1133,1035],{"class":245},[211,1135,800],{"class":225},[211,1137,1138],{"class":245}," rating",[211,1140,161],{"class":225},[211,1142,1035],{"class":245},[211,1144,800],{"class":225},[211,1146,1147],{"class":245}," comment",[211,1149,161],{"class":225},[211,1151,1035],{"class":245},[211,1153,1154],{"class":260},"]\n",[211,1156,1158],{"class":213,"line":1157},29,[211,1159,1160],{"class":260},"    ])\n",[211,1162,1164,1167,1169,1171,1173],{"class":213,"line":1163},30,[211,1165,1166],{"class":245},"    author",[211,1168,161],{"class":225},[211,1170,1035],{"class":245},[211,1172,249],{"class":225},[211,1174,1175],{"class":225}," ''\n",[211,1177,1179,1182,1184,1186,1188],{"class":213,"line":1178},31,[211,1180,1181],{"class":245},"    comment",[211,1183,161],{"class":225},[211,1185,1035],{"class":245},[211,1187,249],{"class":225},[211,1189,1175],{"class":225},[211,1191,1193,1195,1198],{"class":213,"line":1192},32,[211,1194,1085],{"class":353},[211,1196,1197],{"class":221}," refresh",[211,1199,1200],{"class":260},"()\n",[211,1202,1204],{"class":213,"line":1203},33,[211,1205,575],{"class":225},[211,1207,1209,1212],{"class":213,"line":1208},34,[211,1210,1211],{"class":353},"  finally",[211,1213,236],{"class":225},[211,1215,1217,1220,1222,1224,1226],{"class":213,"line":1216},35,[211,1218,1219],{"class":245},"    isSaving",[211,1221,161],{"class":225},[211,1223,1035],{"class":245},[211,1225,249],{"class":225},[211,1227,1228],{"class":607}," false\n",[211,1230,1232],{"class":213,"line":1231},36,[211,1233,575],{"class":225},[211,1235,1237],{"class":213,"line":1236},37,[211,1238,409],{"class":225},[211,1240,1242,1245,1247],{"class":213,"line":1241},38,[211,1243,1244],{"class":225},"\u003C\u002F",[211,1246,700],{"class":260},[211,1248,720],{"class":225},[211,1250,1252],{"class":213,"line":1251},39,[211,1253,416],{"emptyLinePlaceholder":415},[211,1255,1257,1259,1262],{"class":213,"line":1256},40,[211,1258,697],{"class":225},[211,1260,1261],{"class":260},"template",[211,1263,720],{"class":225},[211,1265,1267,1270,1273,1276,1278,1280,1283,1285],{"class":213,"line":1266},41,[211,1268,1269],{"class":225},"  \u003C",[211,1271,1272],{"class":260},"div",[211,1274,1275],{"class":217}," class",[211,1277,709],{"class":225},[211,1279,712],{"class":225},[211,1281,1282],{"class":289},"feedback-page",[211,1284,712],{"class":225},[211,1286,720],{"class":225},[211,1288,1290,1293,1296,1298,1301,1303,1305],{"class":213,"line":1289},42,[211,1291,1292],{"class":225},"    \u003C",[211,1294,1295],{"class":260},"h1",[211,1297,830],{"class":225},[211,1299,1300],{"class":245},"Kirim Feedback Pengguna",[211,1302,1244],{"class":225},[211,1304,1295],{"class":260},[211,1306,720],{"class":225},[211,1308,1310],{"class":213,"line":1309},43,[211,1311,416],{"emptyLinePlaceholder":415},[211,1313,1315,1317,1320,1323,1325,1327,1330,1332],{"class":213,"line":1314},44,[211,1316,1292],{"class":225},[211,1318,1319],{"class":260},"form",[211,1321,1322],{"class":217}," @submit.prevent",[211,1324,709],{"class":225},[211,1326,712],{"class":225},[211,1328,1329],{"class":289},"submitComment",[211,1331,712],{"class":225},[211,1333,720],{"class":225},[211,1335,1337,1340],{"class":213,"line":1336},45,[211,1338,1339],{"class":225},"      \u003C",[211,1341,1342],{"class":260},"input\n",[211,1344,1346,1349,1351,1353,1355],{"class":213,"line":1345},46,[211,1347,1348],{"class":217},"        v-model",[211,1350,709],{"class":225},[211,1352,712],{"class":225},[211,1354,179],{"class":289},[211,1356,1357],{"class":225},"\"\n",[211,1359,1361,1364,1366,1368,1371],{"class":213,"line":1360},47,[211,1362,1363],{"class":217},"        placeholder",[211,1365,709],{"class":225},[211,1367,712],{"class":225},[211,1369,1370],{"class":289},"Nama Kamu",[211,1372,1357],{"class":225},[211,1374,1376],{"class":213,"line":1375},48,[211,1377,1378],{"class":217},"        required\n",[211,1380,1382],{"class":213,"line":1381},49,[211,1383,1384],{"class":225},"      >\n",[211,1386,1388,1390,1393,1396,1398,1400,1402,1404],{"class":213,"line":1387},50,[211,1389,1339],{"class":225},[211,1391,1392],{"class":260},"select",[211,1394,1395],{"class":217}," v-model",[211,1397,709],{"class":225},[211,1399,712],{"class":225},[211,1401,182],{"class":289},[211,1403,712],{"class":225},[211,1405,720],{"class":225},[211,1407,1409,1412,1415,1418,1420,1422,1424,1426],{"class":213,"line":1408},51,[211,1410,1411],{"class":225},"        \u003C",[211,1413,1414],{"class":260},"option",[211,1416,1417],{"class":217}," value",[211,1419,709],{"class":225},[211,1421,712],{"class":225},[211,1423,952],{"class":289},[211,1425,712],{"class":225},[211,1427,720],{"class":225},[211,1429,1431],{"class":213,"line":1430},52,[211,1432,1433],{"class":245},"          5 Bintang\n",[211,1435,1437,1440,1442],{"class":213,"line":1436},53,[211,1438,1439],{"class":225},"        \u003C\u002F",[211,1441,1414],{"class":260},[211,1443,720],{"class":225},[211,1445,1447,1449,1451,1453,1455,1457,1460,1462],{"class":213,"line":1446},54,[211,1448,1411],{"class":225},[211,1450,1414],{"class":260},[211,1452,1417],{"class":217},[211,1454,709],{"class":225},[211,1456,712],{"class":225},[211,1458,1459],{"class":289},"4",[211,1461,712],{"class":225},[211,1463,720],{"class":225},[211,1465,1467],{"class":213,"line":1466},55,[211,1468,1469],{"class":245},"          4 Bintang\n",[211,1471,1473,1475,1477],{"class":213,"line":1472},56,[211,1474,1439],{"class":225},[211,1476,1414],{"class":260},[211,1478,720],{"class":225},[211,1480,1482,1484,1486,1488,1490,1492,1495,1497],{"class":213,"line":1481},57,[211,1483,1411],{"class":225},[211,1485,1414],{"class":260},[211,1487,1417],{"class":217},[211,1489,709],{"class":225},[211,1491,712],{"class":225},[211,1493,1494],{"class":289},"3",[211,1496,712],{"class":225},[211,1498,720],{"class":225},[211,1500,1502],{"class":213,"line":1501},58,[211,1503,1504],{"class":245},"          3 Bintang\n",[211,1506,1508,1510,1512],{"class":213,"line":1507},59,[211,1509,1439],{"class":225},[211,1511,1414],{"class":260},[211,1513,720],{"class":225},[211,1515,1517,1520,1522],{"class":213,"line":1516},60,[211,1518,1519],{"class":225},"      \u003C\u002F",[211,1521,1392],{"class":260},[211,1523,720],{"class":225},[211,1525,1527,1529],{"class":213,"line":1526},61,[211,1528,1339],{"class":225},[211,1530,1531],{"class":260},"textarea\n",[211,1533,1535,1537,1539,1541,1543],{"class":213,"line":1534},62,[211,1536,1348],{"class":217},[211,1538,709],{"class":225},[211,1540,712],{"class":225},[211,1542,185],{"class":289},[211,1544,1357],{"class":225},[211,1546,1548,1550,1552,1554,1557],{"class":213,"line":1547},63,[211,1549,1363],{"class":217},[211,1551,709],{"class":225},[211,1553,712],{"class":225},[211,1555,1556],{"class":289},"Komentar \u002F Masukan",[211,1558,1357],{"class":225},[211,1560,1562],{"class":213,"line":1561},64,[211,1563,1378],{"class":217},[211,1565,1567],{"class":213,"line":1566},65,[211,1568,1569],{"class":225},"      \u002F>\n",[211,1571,1573,1575],{"class":213,"line":1572},66,[211,1574,1339],{"class":225},[211,1576,1577],{"class":260},"button\n",[211,1579,1581,1584,1586,1588,1591],{"class":213,"line":1580},67,[211,1582,1583],{"class":217},"        :disabled",[211,1585,709],{"class":225},[211,1587,712],{"class":225},[211,1589,1590],{"class":289},"isSaving",[211,1592,1357],{"class":225},[211,1594,1596,1599,1601,1603,1606],{"class":213,"line":1595},68,[211,1597,1598],{"class":217},"        type",[211,1600,709],{"class":225},[211,1602,712],{"class":225},[211,1604,1605],{"class":289},"submit",[211,1607,1357],{"class":225},[211,1609,1611],{"class":213,"line":1610},69,[211,1612,1384],{"class":225},[211,1614,1616],{"class":213,"line":1615},70,[211,1617,1618],{"class":245},"        {{ isSaving ? 'Sending...' : 'Kirim Feedback' }}\n",[211,1620,1622,1624,1627],{"class":213,"line":1621},71,[211,1623,1519],{"class":225},[211,1625,1626],{"class":260},"button",[211,1628,720],{"class":225},[211,1630,1632,1635,1637],{"class":213,"line":1631},72,[211,1633,1634],{"class":225},"    \u003C\u002F",[211,1636,1319],{"class":260},[211,1638,720],{"class":225},[211,1640,1642],{"class":213,"line":1641},73,[211,1643,416],{"emptyLinePlaceholder":415},[211,1645,1647,1649,1651],{"class":213,"line":1646},74,[211,1648,1292],{"class":225},[211,1650,143],{"class":260},[211,1652,720],{"class":225},[211,1654,1656],{"class":213,"line":1655},75,[211,1657,416],{"emptyLinePlaceholder":415},[211,1659,1661,1663,1665,1668,1670,1672,1675,1677],{"class":213,"line":1660},76,[211,1662,1292],{"class":225},[211,1664,1272],{"class":260},[211,1666,1667],{"class":217}," v-if",[211,1669,709],{"class":225},[211,1671,712],{"class":225},[211,1673,1674],{"class":289},"pending",[211,1676,712],{"class":225},[211,1678,720],{"class":225},[211,1680,1682],{"class":213,"line":1681},77,[211,1683,1684],{"class":245},"      Memuat komentar...\n",[211,1686,1688,1690,1692],{"class":213,"line":1687},78,[211,1689,1634],{"class":225},[211,1691,1272],{"class":260},[211,1693,720],{"class":225},[211,1695,1697,1699,1702,1705],{"class":213,"line":1696},79,[211,1698,1292],{"class":225},[211,1700,1701],{"class":260},"ul",[211,1703,1704],{"class":217}," v-else",[211,1706,720],{"class":225},[211,1708,1710,1712],{"class":213,"line":1709},80,[211,1711,1339],{"class":225},[211,1713,1714],{"class":260},"li\n",[211,1716,1718,1721,1723,1725,1728],{"class":213,"line":1717},81,[211,1719,1720],{"class":217},"        v-for",[211,1722,709],{"class":225},[211,1724,712],{"class":225},[211,1726,1727],{"class":289},"item in items",[211,1729,1357],{"class":225},[211,1731,1733,1736,1738,1740,1743],{"class":213,"line":1732},82,[211,1734,1735],{"class":217},"        :key",[211,1737,709],{"class":225},[211,1739,712],{"class":225},[211,1741,1742],{"class":289},"item.id",[211,1744,1357],{"class":225},[211,1746,1748],{"class":213,"line":1747},83,[211,1749,1384],{"class":225},[211,1751,1753,1755,1757,1759,1762,1764,1766,1768],{"class":213,"line":1752},84,[211,1754,1411],{"class":225},[211,1756,158],{"class":260},[211,1758,830],{"class":225},[211,1760,1761],{"class":245},"{{ item.author }}",[211,1763,1244],{"class":225},[211,1765,158],{"class":260},[211,1767,830],{"class":225},[211,1769,1770],{"class":245}," ({{ item.rating }} Bintang): {{ item.comment }}\n",[211,1772,1774,1776,1778],{"class":213,"line":1773},85,[211,1775,1519],{"class":225},[211,1777,154],{"class":260},[211,1779,720],{"class":225},[211,1781,1783,1785,1787],{"class":213,"line":1782},86,[211,1784,1634],{"class":225},[211,1786,1701],{"class":260},[211,1788,720],{"class":225},[211,1790,1792,1795,1797],{"class":213,"line":1791},87,[211,1793,1794],{"class":225},"  \u003C\u002F",[211,1796,1272],{"class":260},[211,1798,720],{"class":225},[211,1800,1802,1804,1806],{"class":213,"line":1801},88,[211,1803,1244],{"class":225},[211,1805,1261],{"class":260},[211,1807,720],{"class":225},[1809,1810,1811],"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 .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}",{"title":207,"searchDepth":214,"depth":239,"links":1813},[1814,1815],{"id":148,"depth":239,"text":149},{"id":683,"depth":239,"text":684},"Bangun portal pengiriman feedback langsung menggunakan URL Google Apps Script Web App.","md",null,{},{"title":106,"description":1816},"1aFpqtFmgxszSFw8OdVBH-mtV8XaWut0NRUZhDYQsV0",[1823,1825],{"title":102,"path":103,"stem":104,"description":1824,"children":-1},"Tutorial praktis untuk Apps Script, GViz SQL, CSV, API Key, Service Account, dan Sheet Routing.",{"title":110,"path":111,"stem":112,"description":1826,"children":-1},"Tutorial end-to-end mencakup Apps Script, GCP Console, dan Admin Portal Nuxt.",1786088234299]