มอื ใหม.่ .เรม่ิ ตน้ เรยี นรู้ อภวิ ฒั น์ วงศก์ ณั หา JavaScript cloud scripting language for task automation Google Apps Script คือวิธกี ารส่ังงาน Google Google Apps Script เขียนได้งา่ ย สามารถเขียนบน Browser ได้เลยโดยไม่ต้อง Apps Script แบง่ เป็น 3 ประเภท คือ 1.Standalone Scripts 2.Scripts Bound to Google Sheets, Docs, or Forms เรม่ิ ต้นเรยี กใช้ Service Spreadsheet การสรา้ ง แกไ้ ข หรอื เขา้ ถึง Spreadsheet จะเรม่ิ ตน้ จากการใช้คลาส SpreadsheetApp ตอนที่ 1 การจบั ไฟล์ท่ีกาลัง Active 1.คาสงั่ getActiveSpreadsheet ใชจ้ ับไฟล์ Google Sheet โดยจะคืนค่าออกมาเป็นคลาส Spreadsheet *คาสัง่ นใ้ี ช้กับ Google App Script ทเ่ี ขยี นบน Google Sheet ไมใ่ ช่ Google App Script แบบ Stand Alone ตัวอยา่ ง function myFunction() { ตอนท่ี 1 การจับไฟล์ที่กาลัง Active ตอนท่ี 1 การจบั ไฟล์ท่ีกาลัง Active 2.คาสง่ั getId, getUrl , getName ตัวอย่าง ตอนที่ 2 การสรา้ งไฟล์ใหม่ ตวั อยา่ ง การสรา้ ง Spreadsheet ด้วย App Script function myFunction() { } ตอนที่ 3 การเปิดไฟล์ คาสง่ั openById, openByUrl เป็นคาสั่งที่ใชใ้ นการเปิดไฟล์ โดยอา้ งถึง id หรอื url ก็ได้ หรอื var ss = SpreadsheetApp.openById(id); มอื ใหม.่ .เรม่ิ ตน้ เรยี นรู้ อภวิ ฒั น์ วงศก์ ณั หา สว่ นประกอบต่างๆ ของสเปรตชตี ลาดับการจดั การข้อมูล 2 URL ,ID ,activeSpreadSheet 3 sheetByName ,activeSheet,sheets 4 Cell ,row ,column , range 50 5 setValue getValue การจบั เวริ ก์ ชตี และแผน่ งาน การจบั Spreadsheet(สเปรตชตี ) แบบที่
1 SpreadsheetApp.getActive () เวิรก์ ชตี ที่กาลังใชง้ าน การจบั sheet (แผ่นงาน) แบบที่ 1 getActiveSheet() แผ่นงานท่ีกาลังใชง้ าน การจบั แผน่ งาน แบบแผ่นเดยี ว แบบที่ 1 var ss = SpreadsheetApp.getActiveSpreadsheet() เวริ ก์ ชตี ท่ีกาลังใชง้ าน แบบท่ี 2 var ss = SpreadsheetApp.openByUrl("url") url ของเวริ ก์ ชตี ท่ีกาลังใช้งาน แบบที่ 3 var ss = SpreadsheetApp.openById("id") id ของเวริ ก์ ชตี ที่กาลังใชง้ าน แบบที่ 4 var sheet = SpreadsheetApp.openById("id").getSheetByName("ชื่อชีต"); แบบที่ 5 var sheet = SpreadsheetApp. getActiveSpreadsheet(). getActiveSheet() การจบั แผน่ งาน แบบหลายแผน่ var ss = SpreadsheetApp.getActiveSpreadsheet() เวริ ก์ ชตี ท่ีกาลังใชง้ าน var ss = SpreadsheetApp.openByUrl("url") การจบั ขอ้ มูลในแผน่ งานดว้ ย Range แบบที่ 1 จบั เซลล์เดียว var ss = SpreadsheetApp.getActiveSpreadsheet() เวริ ก์ ชตี ท่ีกาลังใชง้ าน จบั ค่าแบบท่ี 1 var data = range.getValue(); จบั ค่าในเซลล์ A1 ค่าเดียว การจบั ขอ้ มูลในแผน่ งานด้วย Range
แบบท่ี 2 จับหลายแถว row= จุดเรมิ่ แถว column=จุดเรม่ิ คอลัมน์ numRows=จานวนแถว var ss = SpreadsheetApp.getActiveSpreadsheet() เวริ ก์ ชตี ท่ีกาลังใชง้ าน วธิ กี ารดึงค่าออกมา var data = range.getValues(); การจบั ขอ้ มูลในแผน่ งานด้วย Range แบบท่ี 3 จบั แบบตารางขอ้ มูล row= จุดเรมิ่ แถว column=จุดเรมิ่ คอลัมน์ numRows=จานวนแถว numColumns=จานวนคอลัมน์ var ss = SpreadsheetApp.getActiveSpreadsheet() เวิรก์ ชตี ท่ีกาลังใช้งาน วธิ กี ารดึงค่าออกมา var data = range.getValues(); การจบั ขอ้ มูลในแผน่ งานดว้ ย Range แบบที่ 4 จบั แบบสัญลักษณ์ ระบุเรน้ จ์เป็นสญั ลักษณ์ เชน่ A5 หรอื A5:B10 หรอื R[1]C[2] var ss =
SpreadsheetApp.getActiveSpreadsheet() เวิรก์ ชตี ที่กาลังใช้งาน var range = sheet.getRange("แผน่ 1"!A1:D4); การจบั ขอ้ มูลแถวสดุ ท้าย คอลัมน์สดุ ทา้ ย getLastRow() getLastColumn() จับแถวสุดท้ายของเรน้ จ์ จบั คอลัมน์สุดท้ายของเรน้ จ์ var ss = SpreadsheetApp.getActiveSpreadsheet() เวริ ก์ ชตี ที่กาลังใชง้ าน var " = sheet.getRange("B3:D10"); var lr = rang.getLastRow(); มอื ใหม.่ .เรม่ิ ตน้ เรยี นรู้ อภวิ ฒั น์ วงศก์ ณั หา การกาหนดเรนจแ์ บบตา่ งๆ ท่ีควรรู้ แบบที่ 1 var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var ss =
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); แบบท่ี 4 var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); แบบท่ี 5 var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); การดึงขอ้ มูลแบบเซลล์เดยี ว var ss =
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); การดึงขอ้ มูลแบบแถวเดยี ว var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var data = ss.getRange(1,1,1,4).getValues(); var data1 = data[0][0]; =10 Col-index 3 var data3 = data[0][2]; =12 0 2 3 การดึงขอ้ มูลแบบตาราง var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var data = ss.getRange(1,1,5,4).getValues(); var data1 = data[0][0]; =10 Col-index 3 var data3 = data[2][2]; =12 0 2 3 4 เมอื่ มขี อ้ มูลเพม่ิ ใหม่ var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var range = ss.getRange(ss.getLastRow , 1 , 1 , ss.getLasColumn).getValues(); var data = range[0]; Col-index 3 var data4 = data[3]; =24 1 3 แบบที่ 2 4 var data = ss.getRange(ss.getLastRow , 1 , 1 , ss.getLasColumn).getValues()[0]; การดึงขอ้ มูลท้ังหมดโดยการวนลปู For var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); for (var i=0; i<data.length; i++){ Col-index 3 มอื ใหม.่ .เรม่ิ ตน้ เรยี นรู้ อภวิ ฒั น์ วงศก์ ณั หา มอื ใหม.่ .เรม่ิ ตน้ เรยี นรู้ อภวิ ฒั น์ วงศก์ ณั หา มอื ใหม.่ .เรม่ิ ตน้ เรยี นรู้ อภวิ ฒั น์ วงศก์ ณั หา มอื ใหม.่ .เรม่ิ ตน้ เรยี นรู้ อภวิ ฒั น์ วงศก์ ณั หา มอื ใหม.่ .เรม่ิ ตน้ เรยี นรู้ อภวิ ฒั น์ วงศก์ ณั หา การเขียน Function ใน Google App Script 1.แบบ Function ทั่วไป 2.แบบ Arrow Function 1 function test(){ 2 const test=()=>{ var เปน็ ตัวแปรแบบ function-scope เปน็ ตัวแปรทใ่ี ช้ได้ทง้ั ฟังก์ชั่น 3 3.Function แบบมีพารามเิ ตอร์ เขียนแบบส้ันๆ const sum=(a,b)=>{ const test=()=>{ const sum=(a,b)=>a+b ARRAY คือ อะไร Array คือ เป็นชนิดของขอ้ มูลประเภทหน่ึง ใชส้ าหรบั เก็บค่าหลายค่า ไวใ้ นตัวแปรเดียว ข้อมูล แต่ละตัวของอารเ์ รยจ์ ะเรยี กวา่ อลี ีเมนต(์ Element) และข้อมูลแต่ละอลี ีเมนต์จะมีหมายเลข เพื่อใชใ้ นการอา้ งองิ ถึง เรยี กตัวเลขนี้ วา่ เลขดชั นี (Index) index Numbers element 0 2 Numbers[0] var Numbers = [2,3,5,8] 1 3 Numbers[1] 2 5 Numbers[2] Array 1 มิติ 3 8 Numbers[3] ARRAY 2 มติ ิ เป็นตัวแปรชดุ ที่มีการจัดการขอ้ มูล Row (แถว) , Column (หลัก) ซง่ึ อยูใ่ นรปู แบบตาราง Array 2 มติ ิvar Numbers = [[2,4],[3,1],[5,7],[8,9]] 0Numbers[0][0]=2 0 1 2 4 Numbers[0][1]=4 1Numbers[1][0]=3 3 1 Numbers[1][1]=1 2Numbers[2][0]=5 5 7 Numbers[2][1]=7 3Numbers[3][0]=8 8 9 Numbers[3][1]=9 Numbers คาสั่งที่ควรรใู ้ นการจดั การขอ้ มูลใน ARRAY length ใชน้ ับจานวนขอ้ มูลที่มใี น array toLocalString() ใชแ้ สดงขอ้ มูลใน array join() ใชร้ วมขอ้ ความท้ังหมดใน array ให้เป็นขอ้ ความเดียว concat() ใชร้ วม array 2 ตัว ให้เป็น array ตัวเดียว slice() ใชเ้ ลือกขอ้ มูลใน array sort() ใชจ้ ดั เรยี ง ขอ้ มูลใน array จากน้อยไปมาก reverse() ใชส้ ลับขอ้ มูลใน array จากหลังมาหน้า จากหน้าไปหลัง splice() ใชล้ บและเพิ่มขอ้ มูลเขา้ ไปในตาแหน่งท่ีกาหนด push() ใชเ้ พ่ิมขอ้ มูลลงใน array ในลาดับสุดท้าย pop() ใชด้ ึงขอ้ มูลในลาดับสุดท้ายออกจาก array unshift() ใชเ้ พ่ิมขอ้ มูลลงใน array ในลาดับแรก shift() ใชด้ ึงขอ้ มูลในลาดับแรกสดุ ของ array ออกมา 1. For-Loop ฟังชน่ั for loop จะมหี น้าท่ีเอาไวว้ นลปู เพ่ือนาค่าใน Array ออกมาแสดงผลลัพธ์ รูปแบบคาส่ัง for(ค่าเรมิ่ ตน้ ;เงอ่ื นไข;การเพ่ิมคา่ ) { 2 for (var i = 0; i < Numbers.length; i++) { Logger.log(Numbers[i])} 3 Logger.log(Numbers[i]) 5 [2,3,5,8] 8 2. ForEach (กรณีท่ีใช้กับ ขอ้ มูลชุดเดียว) ฟังชนั่ ForEach จะมีหน้าที่เอาไวว้ นลปู เพ่ือนาค่าใน Array แต่ละตัวมากระทา Numbers Numbers.forEach(item=>{ 2 3 Logger.log(item) 5 8 2. ForEach (กรณีท่ีใชก้ ับ Array 2 มติ ิ ข้อมูลแบบตาราง) รปู แบบ : array.forEach(function(item, index, rows) Numbers var Numbers = [[2,4],[3,1],[5,7],[8,9]] item Number.forEach(function(item){ }) 38 9 3 Number.forEach( item=>{ }) 3. Map (กรณีท่ีใช้กับข้อมูลชุดเดียว) จะคล้ายกับ ForEach คือค่าใน Array แต่ละตัวจะทาการนาไปผ่าน Function ท่ี เรากาหนดไว้ แต่ Map น้ัน สามารถ return ค่าออกมาไดโ้ ดยค่าท่ี return ออกมาจะเป็น Array ซ่งึ สามารถนาไปทาใน Method อน่ื ได้ Numbers var result = Numbers.map(item=>{ result item return 36 item*2 5 10 8 16 2. Map (กรณีท่ีใชก้ ับ Array 2 มิติ ขอ้ มูลแบบตาราง) var Numbers = [[2,4],[3,1],[5,7],[8,9]] Numbers แมปข้อมลู ท้ังหมด 02 4 return item
}) 13 1 แมปขอ้ มูลคอลมั น์ 0 Array 2 มติ ิ แมปขอ้ มลู คอลัมน์ 1 var result = Numbers.map(item=>{ 4. Filter จะมีหน้าท่ีไวค้ ัดกรอง ถ้าสมาชกิ ใน Array ตัวไหนท่ีเงอื่ นไขได้ตามท่ีทาหนดไว้ Numbers
var result = Numbers.filter(item=>{ false result true 5. Find แทบจะเหมือนกับ Method Filter เลยแต่ต่างกันตรงท่ี Method Find นั้น Numbers var result = Numbers.find(item=>{ result item return 3 false 5 true 5 8 |