The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

หลักการเขียนโปรแกรม Google Apps Script

Discover the best professional documents and content resources in AnyFlip Document Base.
Search

หลักการเขียนโปรแกรม Google Apps Script

หลักการเขียนโปรแกรม Google Apps Script

15.23. กรองคอลลัมนย์ในอสำเรย์ย 2 มพตพ

Best Way to Filter Certain Columns in an Array of Arrays in Javascript

https://stackoverflow.com/questions/45345936/best-way-to-filter-certain-columns-in-an-array-of-arrays-in-javascript

โคด้ค

function callFil(){

var indexlist = [0, 2, 3] ;
var arr2dims = [ // 0 1 2 3 4

['a', 'b', 'c', 'd', 'e'] ,
['m', 'n', 'o', 'p', 'q'] ,
['t', 'u', 'v', 'w', 'x'] ]

Logger.log(shortenedCol(arr2dims,indexlist)) ;
}

function shortenedCol(arr2dims, indexlist) {
return arr2dims.map(function(array) {
return indexlist.map(function(idx) {
return array[idx] ;
}) ;
}) ;

}

ผล

Logs 23
// 0 c, d ] ,
o, p ] ,
[ [a, v, w ] ]
[m,
[t,

ทดสอบ เพงือ่ ควสำมเขส้ค ำใจทงื่ีงค ยู่สำยขึถซน

var arr2dims = [ // 0 1 2 3 4
['a', 'b', 'c', 'd', 'e'] ,
['m', 'n', 'o', 'p', 'q'] ,
['t', 'u', 'v', 'w', 'x'] ]

var newarr = arr2dims.map( row => [ row[0], row[2], row[3]] )
Logger.log(newarr) ;

ผล – ให้ผค ลเหมอง นกลนั แต่ยตู วัล อยสูย่ ำงนซฟคี ิกป ซคล อลัลมนล เพอืง่ ใหค้เขค้สำใจง่ยสู ำยขึนถซ เพรสำะเหลงอแคู่ลย ยปเดียค ว

Logs 23 ]
// 0 c, d] ,
o, p] ,
[ [a, v, w]
[m,
[t,

บทท่ริขี 15 : เทคนคร อาเรย์ต 201

202 หลลักการเขขียนโปรแกรม Google Apps Script โดย วสันล ต์ต คณุค ดลร กเศวต ([email protected])

บททีขท่ 16
รู้ลรจกลั กัลบ
Google Services

16.1. สรปุถ OOP

Google Apps Script มโคี ครงสรส้ค ำงกสำรเขยีค นโปรแกรมเหมอง นกบลั Java Script

โครงสรส้ค ำงกสำรเขีคยนโปรแกรมของ Google Apps Script เปป็นแบบ OOP(Object-Oriented
Programming) หรงอ การเขยท นโปรแกรมเชงิพ วตัต ถุจ

ผค้เย ขคียนพยสำยสำมจะอธบิพ สำยเรอื่ง งของ OOP ใหค้งสยู่ ำยที่ืคงสถด ดงัล นซคี

Programming ก็กคอง กสำรเขสค้ ำไปควบคุมถ หรอรื สทรงี่ งสำน โดยสงพิงื่ ท่ีงเืค รสำจะเขีคยนโปรแกรมเขส้ค ำไปควบคมถ จะถยก
มองวสู่ย ำเปป็นวตร ถถุ(Objects) เชยู่น ไฟลล, โฟลเดอรล, ตสำรสำงคสส ำนวณ, เอกสสำร เป็นป ตนค้

วตัล ถมถ คี คถุณสมบรตพิ(Properties) หรอง คถุณลรกษณะ(Attributes) เชนยู่ สีค, ขนสำด เปป็นตค้น และวัตล ถถ
สสำมสำรถทสสำสง่งิพื ตยู่สำงๆไดคต้ สำมคสส ำสงื่ลงั (Methods) เชยนู่ ยสค้ ำย, จบลั , หนีบค , หมนถ เปป็นตน้ค วตลั ถถสสำมสำรถประกอบไป
ดว้ค ยวตัล ถถยอูย่ ยๆไดอ้ค คีก เปน็ป วรตถลถุ กมู หลสำน ซึถงงื่ ก็มก คี Properties และ Methods ดวค้ ยเชูน่ย เดยีค วกนลั

เม่ืงอ Google ออกแบบอะไรมสำใหเ้ค รสำใช้งค สำน เรสำจะเรคียกวสู่ย ำ เซอร์พวิพส(Services) หรงอ บรกพิ สำร ซ่งทีน ภสำยใน
บรพิกสำรจะประกอบไปด้ควยวตร ถถุตส่ม ำงๆนสำนสำ

ตวัล อยสยู่ ำงทมีง่คื ลักจะยกขซนถึ มสำเปรคียบเทยคี บกัลน กค็ก อง บรกพิ สำรรถยนตพ์

บรกพิ สำรรถยนตพ์ มคี วตร ถุถหลกร ทเ่ที รสำจะควบคุถม ก็คก งอ ตวร รถยนต์พ มีค คณถุ สมบตร ิพ(Properties) สคี, นซสสำหนัลก,
ยืหีคง่ คอ้ เป็ปนต้นค และรถยนตสล สำมสำรถทสสำตสำมคสสำส่ลืงัง ไดค้(Methods) เชูน่ย เรยู่งควสำมเรวก็ , เหยียค บเบลค เปป็นตค้น ตัลว
รถยนตลประกอบไปด้ควยวตัล ถถยูอ่ย ยๆมสำกมสำย เชนู่ย ประต,ย ครลัช, คนัล เรู่ยง, ล้คอ เปป็นต้คน

เม่ืงอคย่สู ำยรถยนตลทสสำรถมสำขสำย เขสำไดท้ค สสำรถยนตพม์ สำเรทยบรค้อยแลวค้ หรอง มทบรกพิ สำรเตรทยมไวแ้ค ลคว้ ในสวูย่ นของ
เรสำหรอง ผคย้ใชคง้ สำน กคก็ งอ เลรอื กรถทใ่ที ชมร่ ุ่นถม ท่ีทชอบ จสำกนซลันก็ก นสสำรถมสำใชค้งสำนตสำมทรท่ี ถยนตพ์จะทสสำไดค้

16.2. Google Services (G Suite services)

G Suite services
https://developers.google.com/apps-script/reference

Google Services กคซ็ ลคส้ ำยกรบกสำรทสสำรถยนต์พออกมสำขสำย
Google Services หรอง บรกิพ สำรจสำก Google สสสำหรลบั นลกั พลฒั นสำหรงอนลกั เขียค นโปรแกรม เพองื่ ควบคมถ กสำรใชค้
งสำน Google Apps มีมค สำกกวสู่ย ำ 30 เซอรวล พิส(Services) เชยู่น เซอรวล สพิ Spreadsheet, เซอรวล พสิ Document
เปปน็ ตค้น โดยแตล่ยู ะเซอรวล พิสประกอบไปดว้ค ย วตร ถุถ(Objects) มสำกมสำยหลสำยตวัล ซงึืถง่ บ่ยอู ยครงัลซ เรยีค กวลตั ถถวู่ยสำ
คลสำส(Class) เชูยน่ เซอรลวสพิ Spreadsheet ประกอบไปดว้ค ย คลสำส Range, คลสำส Sheet เปป็นตนค้

เซอรพ์วสพิ ของ Google เปป็นสีิทพ่งท่ที Google จรดเตรยท มไวใค้ ห้แค ลค้ว ทืเ่คีง หลอง เรสำกก็แคยเู่ ลงอกและนสสำมสำโปรแกรมใหค้
ตรงตสำมวตัล ถปถ ระสงคขล องเรสำ โดยกสำรเขยีค นโปรแกรมเขค้สำไปควบคมถ ตสำม Methods หรอง Properties ท่งืคี Objects
หรอง Class มคีให้ค

204 หลลกั การเขขียนโปรแกรม Google Apps Script โดย วสันล ตต์ คณุค ดรลกเศวต ([email protected])

เชน่ยู
เซอรวล สิพ Spreadsheet เร่มืงิพ ตค้นจสำกคลสำส SpreadsheetApp ซงืถงึ่ มีค Method เชน่ยู openById() ใชคส้ สส ำหรบัล
เปปิดไฟลล Google Sheet โดยระบถ ID ของไฟลลลงใน () นอกจสำกนซคีค ลสำส SpreadsheetApp มคี Property เชู่ยน
BandingTheme ซถงึ่งื เก็บก ชง่อื ของรยปแบบของ Alternating Colors ไว้ค

16.3. กสำรเรยีค กใช้ค Google Services

กสำรเขีคยนโปรแกรมเพอง่ื ใชบ้ค รกพิ สำร Google Services อสำศลัยกสำรเขคส้ ำไปจลับวตลั ถถเริ่มืพง ต้คนกูยอ่ น จสำกนนัซล จถงึ ค่ยูอยๆ
ลงลึถกลงไป จนถถึงวตัล ถถท่ืงคีเรสำจะควบคมถ ซงืงึถ่ เรสำเรยีค กวสู่ย ำ Chainning(การร้คอยโซู่ย)

เมง่ือจบลั ส่งิืพงที่ืตคง อ้ค งกสำรได้คแล้วค กก็ก สส ำหนดคณถ สมบัตล พิ หรอง ใชคเ้ มถอด สลังื่งงสำนใหค้วตลั ถทถ สส ำอะไรกวก็ ู่ยสำไป
Google Services มโท ครงสรส้ค ำงกสำรเเรยท กใชคง้ สำน ได้ดค ัลงนคีซ

GlobalObjectName.methodName(argument1, argument2, ..., argumentN) ;

GlobalObjectName เป็นป ชอง่ื คลสำสในเซอรลวิพส เช่ยูน MailApp, SpreadsheetApp, DocumentApp
เปน็ป ตค้น

ตรวอยส่ม ำง โคดค้ ตยอู่ ไปนซีค เรยีค กใชค้เมถอดชง่อื sendMail() ในคลสำส GmailApp เพงอ่ื สูง่ย อคเี มลล

GmailApp.sendEmail('[email protected]', 'Subject line', 'This is the body.') ;

ตวร อยสม่ ำงวตร ถุถรถยนต์พ
กสำรเรีคยกใช้คงสำนเซอรลวพิส เพ่งือเข้คสำไปควบคถมวลัตถถหรงอคลสำส เพ่ืงอใหค้เขค้สำใจงู่ยสำย ขอยกตลัวอยยู่สำง วรตถถุรถยนตพ์
ตวัล อยสยู่ ำงตยู่อไปนคซี เรสำจะสงงัลื่ งสำนใหร้ค ถยนตลขัลบทค่งีคื วสำมเรก็ว 80 ซงึงืถ่ สสำมสำรถเขคียนเปน็ป โคดค้ ไดดค้ ัลงตอยู่ ไปนีคซ

// Object.Object.Method(Value)
รถยนตล.คตันเรงูย่ .เหยทยบคนตั แรงู่ย (80) ;

ตรวอยสม่ ำงกสำรเรทยกใช้คค ลสำส Math
คลสำส Math เป็ปน Built-in Services ของ Google ท่คีงืมีคกสำรใชค้งสำนเหมงอนคลสำส Math ของ JavaScript
ตวัล อยสู่ย ำงโคคด้ ต่ยูอไปนคีซ เรีคยกใช้ค Method ช่งือ pow() ของคลสำส Math เพืงอ่ คสสำนวณเลขยกกสส ำลัลง จสำกนซัลนเก็กบคู่ยสำไว้คใน
ตวลั แปร numPow

Math object ของ JavaScript
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math

var numPow = Math.pow(2,3) ;
Logger.log(numPow) ; // พมร พต์ : 8

บททขิ่รี 16 : รชู้จบ ลักกับล Google Services 205

เรยท กใชบ้ค ริกพ สำรในคลสำสย่อม ย
กรณีคเมถอดทคเ่งีื รสำเรคียกใช้คบรกพิ สำร คนง คสยู่ ำกลลับมสำเป็นป คลสำสองืน่ ยกตวัล อยูสย่ ำง

DocumentApp.create('New document') ;

เมถอดชอืง่ create() คนง คสู่ย ำกลับล มสำเปน็ป คลสำส Document เรสำจึงถ สสำมสำรถรคอ้ ยเมถอดของคลสำสเข้สค ำดว้ค ยกลนั
ในบรรทดัล เดียค ว(Chaining method) โดยใชค้ . (Period หรอร จจุด) ตอู่ย กนลั ไปเรง่อื ยๆ เพอง่ื เข้สค ำถึถงวัตล ถถหรอง คลสำสทงืค่เี รสำ
ตคอ้ งกสำรจะควบคมถ

ตวร อยม่สำง - โคดค้ ตู่อย ไปนีซสค รส้ค ำงไฟลล Google Docs ไฟลใล หมูย่ โดยตซงลั ชอง่ื ไฟลวล สู่ย ำ New document และพพิมพล
ยยู่อหนค้สำทม่ืคีง คขี ้คอควสำม New paragraph ลงไป

// สร้าช งไฟล์ต Google Docs ชอมืริ่ New document … แลชว้ จับล ใสคต่ ัลวแปรช่ิมอรื doc ไว้ช
var doc = DocumentApp.create('New document') ;

// จบัล ไปท่ขีริ Body ของเอกสาร New document ใสค่ตลัวแปรชิ่อมืร body ไวช้
var body = doc.getBody() ;

// พมร พ์ตต อค่ ท้ชาย ดว้ช ยย่อค หน้าช ทมริี่ข ีขข้ชอความ New paragraph
body.appendParagraph('New paragraph.') ;

โคดค้ ตูย่อไปนคซี ให้ผค ลลัลพธลเหมงอนกลบั ข้คสำงบน แตยเู่ ขคียนโคด้ค โดยร้อค ยกลนั เปนป็ บรรทลัดเดียค ว

DocumentApp.create('New document').getBody().appendParagraph('New paragraph.') ;

โคดค้ ข้คสำงตค้น เขคียนไวค้คนละบรรทดลั ก็กไดค้ ดงัล นคซี

DocumentApp.create('New document')
.getBody()
.appendParagraph('New paragraph.') ;

16.4. Enum หรือร Enumeration

Enum (Enumeration) เป็ปนกสำรแจกแจงคณถ สมบตลั ิพของวลตั ถถ วสยู่ ำวตัล ถถมคคี ณถ สมบัลตอพิ ะไรบส้ค ำง เพอ่ืง ทเี่ืงค รสำจะ
สสำมสำรถเขส้ค ำไปเปลคียง่ื นหรงอดึถงคูยส่ ำของคณถ สมบัตล ิพออกมสำดไย ด้ค

ยกตัวล อยสู่ย ำง
วตร ถุลถ ค้อรถยนต์พ มคคี ถณสมบัลตพอิ ะไรบ้คสำง ผ้ผคย ลพิตกกจ็ ะแจกแจงมสำใหเ้ค ลย เชยู่น สคี, ขนสำด, รสำคสำ เปป็นตนค้ จสำกนซนัล
กก็มลัดรวมกลันไวค้ แลว้ค ตซงลั ชองื่ วู่สย ำ ENUM ลอ้ค รถยนตล เปป็นตนค้
ในกรณขีค อง Google Apps วตัล ถถตู่ยสำงชนิดพ กนัล สสำมสำรถมคี Enum ตวัล เดคยี วกนัล ไดค้ เพรสำะคณถ สมบลตั ใิพ กล้คเคีคยง
กนัล มสำก จถึงไมจูย่ สสำเปนป็ ตค้องมคี Enum เฉพสำะวัลตถถ เพรสำะ Enum จะมสำกเกพินไป เชนู่ย ตวตั อตกั ษร(Characters) และ
ย่ยอู หนคา้ (Paragraph) ใช้ค Enum ตวลั เดคยี วกลนั ไดค้ แตค่ยู ถณสมบลตั ิพใน Enum บสำงตัลวอสำจไมยู่มีค

206 หลลกั การเขียข นโปรแกรม Google Apps Script โดย วสลนั ตต์ คณุค ดรลกเศวต ([email protected])

ยกตวลั อยสยู่ ำง Enum Attribute ในคลสำส Document

Enum Attribute(คจุณลตกั ษณะ) เปนป็ กสำรแจกแจงคณถ ลักล ษณะของวตลั ถถ เชนู่ย คถณสมบลตั ิพ BOLD กคก็ งอ
คจุณสมบตตั ติพ วัต หนาของอกตั ษร เปป็นตค้น

เรสำสสำมสำรถเขส้ค ำถงึถ Enum Attribute ไดโ้ค ดยใชค้โคคด้ ทืคีง่มโคี ครงสรส้ค ำงดงลั นคซี

// Class Enum Property

DocumentApp.Attribute.[Property]

โดย Properties ใน Enum Attribute สสำมสำรถดไย ด้คจสำกตสำรสำงตอยู่ ไปนีซค

( ทีมิรข่ า https://developers.google.com/apps-script/reference/document/attribute )

Property Description

BACKGROUND_COLOR The background color of an element (Paragraph, Table, etc) or document.

BOLD The font weight setting, for rich text.

BORDER_COLOR The border color, for table elements.

BORDER_WIDTH The border width in points, for table elements.

CODE The code contents, for equation elements.

FONT_FAMILY The font family setting, for rich text.

FONT_SIZE The font size setting in points, for rich text.

FOREGROUND_COLOR The foreground color setting, for rich text.

HEADING The heading type, for paragraph elements (for example, DocumentApp.).

HEIGHT The height setting, for image elements.

HORIZONTAL_ALIGNMENT The horizontal alignment, for paragraph elements (for example, DocumentApp.).

INDENT_END The end indentation setting in points, for paragraph elements.

INDENT_FIRST_LINE The first line indentation setting in points, for paragraph elements.

INDENT_START The start indentation setting in points, for paragraph elements.

ITALIC The font style setting, for rich text.

GLYPH_TYPE The glyph type, for list item elements.

LEFT_TO_RIGHT The text direction setting, for rich text.

LINE_SPACING The line spacing setting as a multiplier, for paragraph elements.

LINK_URL The link URL, for rich text. The default link style (foreground color, underline) is
automatically applied.

LIST_ID The ID of the encompassing list, for list item elements.

MARGIN_BOTTOM The bottom margin setting in points, for paragraph elements.

MARGIN_LEFT The left margin setting in points, for paragraph elements.

MARGIN_RIGHT The right margin setting in points, for paragraph elements.

MARGIN_TOP The top margin setting in points, for paragraph elements.

NESTING_LEVEL The item nesting level, for list item elements.

MINIMUM_HEIGHT The minimum height setting in points, for table row elements.

PADDING_BOTTOM The bottom padding setting in points, for table cell elements.

PADDING_LEFT The left padding setting in points, for table cell elements.

PADDING_RIGHT The right padding setting in points, for table cell elements.

PADDING_TOP The top padding setting in points, for table cell elements.

PAGE_HEIGHT The page height setting in points, for documents.

PAGE_WIDTH The page width setting in points, for documents.

SPACING_AFTER The bottom spacing setting in points, for paragraph elements.

SPACING_BEFORE The top spacing setting in points, for paragraph elements.

STRIKETHROUGH The strike-through setting, for rich text.

UNDERLINE The underline setting, for rich text.

VERTICAL_ALIGNMENT The vertical alignment setting, for table cell elements.

WIDTH The width setting, for table cell and image elements.

บททขีิ่ร 16 : รจูช้บ กัล กลับ Google Services 207

ตวร อยสม่ ำง - ใหสค้ รสค้ ำงไฟลล Google Docs จสำกนซัลน สรส้ค ำงโปรเจ็กค Google Apps Scritpt แบบฝงัฝ และเขยีค น
โคดค้ ดงลั ตูอย่ ไปนลซคี งไป

function getAttributes_test() {
// จบัล ไปทขิีร่ส่วค น Body ของไฟลต์ Google Docs ทโ่ขีริ คด้ช ฝงฟั อยค่บู
var body = DocumentApp.getActiveDocument().getBody() ;
// พมร พต์ยอค่ หนช้าที่มิรข ขขี ชอ้ ความตคอ่ ท้าช ยสุดค + ทกาตวัล หนา + ทาก ตลวั เอยีข ง
var par = body.appendParagraph('A bold, italicized paragraph.') ;
par.setBold(true) ; // ทกาตัลวหนา
par.setItalic(true) ; // ทกาตลวั เอีขยง
// จบัล Attributes ของย่อค หนช้าขาช้ งบน ใส่คตวลั แปร atts
var atts = par.getAttributes() ;
Logger.log(atts) ; // Logs ดบู Attributes ของยอค่ หน้ชา
// ดผบู ลทิีรข่ Logs ----------------------------- >
// วนลปบู Logs ดูบ Attributes(Property และ Value) ของย่คอหน้ชา ทขีริ่เก็บก อยใูบค่ นตลัวแปร atts
for (var att in atts) {
// Property Value
Logger.log(att + ":" + atts[att]) ; // ดผูบ ลทีริข่ Logs ----------------- >
} // จบลปบู for

} // จบฟฟงั กต์ชัล่ิรน

ผลหลงลั รนลั โคดค้ - พมพิ พลยย่อู หนส้ค ำท่มคีืง ีคขค้อควสำม A bold, italicized paragraph. และ กสสำหนดตรวอกร ษรเป็นป
ตรวหนสำ และเอทยงทรัง้ ย่อม หน้สค ำ ตสำมภสำพ

ผลจสำกบรรทัดล Logger.log(atts); ไดผค้ ลลพัล ธลดลังตยู่อไปนีคซ - จะเห็นก วย่สู ำ atts เป็ปนตลวั แปร Object หสำกจะจับล
แต่ยลู ะ Item ในตลวั แปร Object ออกมสำดย จงถึ ตอ้ค งใช้ค for/in วนลปย เขคส้ ำไป

Logs
[ 01 ] {FONT_SIZE=null, ITALIC=true, HORIZONTAL_ALIGNMENT=Left,
INDENT_END=0.0, INDENT_START=0.0, LINE_SPACING=1.15, LINK_URL=null,
UNDERLINE=null, BACKGROUND_COLOR=null, INDENT_FIRST_LINE=0.0,
LEFT_TO_RIGHT=true, SPACING_BEFORE=0.0, HEADING=Normal,
SPACING_AFTER=0.0, STRIKETHROUGH=null, FOREGROUND_COLOR=null, BOLD=true,
FONT_FAMILY=null}

208 หลกลั การเขียข นโปรแกรม Google Apps Script โดย วสนลั ต์ต คณคุ ดลร กเศวต ([email protected])

ผลจสำกวนลยป for/in เพ่งอื ดย Attributes(Property และ Value) ของยู่ยอหนสค้ ำได้ผค ลลพลั ธดล ลังตู่ยอไปนคซี

Properties ตสยู่ ำงๆท่งปืคี รสำกฎใน Logs มคอี ยใ่ยู นตสำรสำง Enum Attribute (แตูย่ไมู่คย รบทงลัซ หมด) นอกจสำกนซีค
แต่ยลู ะ Property มคี Value(คสู่ย ำของคถณสมบัลติพ) ระบถไว้ดค ว้ค ย เชู่นย ITALIC:true กคก็ งอ เปป็นอกัล ษรตวัล เอียค ง(จริพง)

Logs

[01] FONT_SIZE:null

[02] ITALIC:true // โคด้ช ตลังี้น เปปน็ ตลวั เอยีข งไว้ช

[03] HORIZONTAL_ALIGNMENT:Left

[04] INDENT_END:0

[05] INDENT_START:0

[06] LINE_SPACING:1.15

[07] LINK_URL:null

[08] UNDERLINE:null

[09] BACKGROUND_COLOR:null

[10] INDENT_FIRST_LINE:0

[11] LEFT_TO_RIGHT:true

[12] SPACING_BEFORE:0

[13] HEADING:Normal

[14] SPACING_AFTER:0

[15] STRIKETHROUGH:null

[16] FOREGROUND_COLOR:null

[17] BOLD:true // โคด้ช ต้งีนลั เป็ปนตวัล หนาไวช้

[18] FONT_FAMILY:null

หมสำยเหตุถ : ทค่ืีงมสำของโคคด้ ขส้ค ำงตคน้ กก็คอง

https://developers.google.com/apps-script/reference/document/body#getattributes

getAttributes() เป็ปนเมถอดในคลสำส Body/Text ใชจ้ค ลบั Attributes ของวลัตถถ โดยจะคงนคยู่สำกลับล มสำเป็นป

Enum Attribute

16.5. Interfaces

Interfaces เปปน็ บริกพ สำรหรอง เปป็นสู่วย นทง่บืีค อกวสยู่ ำวตัล ถนถ ซัลนๆ สสำมสำรถทสส ำอะไรได้คบ้คสำง หรอง เป็ปนกลยูม่ถ ของ เมถ
ถอด(Methods)ของวลัตถถ Interfaces มลกั ใชเค้ รียค กเมถอดรวมๆของวลตั ถถ

โดยปกตพิ ผเ้คย ขยีค นมลกั ไมคู่ย ยู่อยใชคค้ สส ำว่ยสู ำ Interfaces ในกสำรสอง่ื ถงถึ เมถอดของวตลั ถหถ รอง คลสำส แตจู่ย ะใชค้ค สส ำวู่ยสำ เม
ถอดอยสยู่ ำงเดคียวอยู่ยบอูย่ ยๆ

แต่ยทู ืี่คตง ้คองทสส ำควสำมเขสค้ ำใจกลับคสส ำวยู่สำ Interfaces เพรสำะเมถอดของวัตล ถถบสำงตัลว คนง คยู่สำกลับล มสำเปป็น Interfaces
ของวตลั ถถอคกี ตัลวหน่ืงึถง กคก็ อง คงนคยูส่ ำกลลบั มสำเปน็ป เมถอดของวตลั ถอถ ีกค ตลวั หนืึง่ถงนนง่ัลื เอง ฉะนซัลน เรสำจะได้คไม่ตยู ค้องงงวส่ยู ำ
Interfaces คงออะไร

อยสูย่ ำสัลบสนระหว่ยูสำง User Interfaces และ Interfaces
User Interfaces เป็ปนสูย่วนของหน้คสำตสำของโปรแกรม เช่ยูน เมนยหรงอไซดลบสำรล เปป็นตค้น สู่ยวน Interfaces
ทีงอ่ืค ธบพิ สำยในขคอ้ นคีซ เปป็นกลูยถม่ Methods ของวตัล ถถหรงอคลสำส

บทท่ิรีข 16 : รจ้บูช ลักกลบั Google Services 209

ยกตัวล อยสู่ย ำง Interface Element ของเซอรลวสิพ DocumentApp

https://developers.google.com/apps-script/reference/document/element

เอกสสำร Google Docs ประกอบไปดคว้ ย Elements ตสู่ย ำงๆ เชูนย่ ListItem (หวัต ขอ้ค อตตั โนมตัต ิพ เชยนู่ Bullets
หรอร Numbering), Paragraph(ยอยู่ หนา้ค ) และ Table(ตาราง) เปนป็ ตน้ค ทถกตัลวก็คก อง Element ซง่ืงึถ มคีเมถอดกลยูม่ถ
หนงึถืง่ ทีื่ซงค ซสสำกลนั กเ็ก ลยถกย จบัล มสำมลัดรวมกัลน (Inherit หรงอสงบทอดสืงิ่พงทคีงซื่ สซสำกันล ออกมสำ) กลสำยเป็นป Interface
Element หรงอ เปน็ป กลมยูุ่จ เมถอดวัตต ถจุ Element

เมถอดใน Interface Element ยกตวัล อยู่ยสำงเชยนู่ getAttributes(), เมถอดตระกลย as เชยู่น
asParagraph() เปปน็ ตคน้

อยสยู่ ำสบัล สนลั กลับ คลาส Element(ตสำมลพิงคดล สค้ ำนล่สยู ำง) เพรสำะเป็ปนคนละตวลั กนัล คลาส Element เปน็ป วตลั ถถ
สู่ยวน Interface Element เปนป็ กลูยถม่ ของเมถอด ของวตตั ถจุ Element

( Class Element https://developers.google.com/apps-script/reference/xml-service/element )

ยกตรวอย่มสำง
องคปล ระกอบในสู่วย น Body ในเอกสสำร Google Docs มีตค สำมภสำพ

โคด้ค ต่อูย ไปนีซค จับล Elements ใน Body ของเอกสสำร Google Docs มสำ Log ดวย สู่ย ำมชคี นิพดเป็นป อะไรบสค้ ำง

function testElem() {
var body = DocumentApp.getActiveDocument().getBody();
var elemInBody = body.getNumChildren();
for(var x = 0 ; x < elemInBody ; x++){
Logger.log(body.getChild(x).getType());
};

}

210 หลัลกการเขขียนโปรแกรม Google Apps Script โดย วสลันต์ต คณุค ดรลกเศวต ([email protected])

ผลหลงลั รัลน

Logs
[ 01 ] PARAGRAPH
[ 02 ] TABLE
[ 03 ] LIST_ITEM
[ 04 ] LIST_ITEM
[ 05 ] LIST_ITEM
[ 06 ] PARAGRAPH

หมสำยเหตถุ
ดรย สำยละเอคยี ดเพิงืมพ่ เตมพิ ไดจ้ค สำกลงพิ คตล ่ยูอไปนคีซ

getType() - Method ใน Interface Element
https://developers.google.com/apps-script/reference/document/element#gettype

ใชจค้ ลบั ชนพิดของ ELement คงนคสู่ย ำกลบลั มสำเปป็น Enum ElementType

Enum ElementType – แจกแจงชนรดของ Elements
https://developers.google.com/apps-script/reference/document/element-type.html

getChild – Method ในคลาส ContainerElement/Element

https://developers.google.com/apps-script/reference/document/container-element#getchildchildindex

https://developers.google.com/apps-script/reference/xml-service/element#getchildname

ใช้จค บัล Element ตสำมดรรชนีคลสสำดัลบ เชยนู่ getChild(0) เปน็ป ตน้ค คนง คสู่ย ำกลับล มสำเปป็น Element

getNumChildren() – Method ในคลาส ContainerElement

https://developers.google.com/apps-script/reference/document/container-element#getnumchildren

ใช้คจลับจสส ำนวน Elements คนง คูสย่ ำกลบลั มสำเป็นป เลขจสส ำนวนเต็มก

บททข่ีิร 16 : รูชบ้จกลั กลบั Google Services 211

212 หลลักการเขขียนโปรแกรม Google Apps Script โดย วสันล ต์ต คณุค ดลร กเศวต ([email protected])

บททที่ข 17
คลาส Logger
และ console

17.1. คลสำส Logger

Class Logger
https://developers.google.com/apps-script/reference/base/logger?hl=th

คลสำส Logger เปน็ป หน้คสำตสยู่ ำง Console ทืงี่ใค ช้แค สดงผลลลัพธลจสำกกสำรรัลนโคด้ค

Methods ของคลสำส Logger มดีค งลั ตยู่อไปนซีค

Method Return type Brief description
clear()
getLog() void ลา้ช ง log
log(data)
String คนืม คา่ค เป็นป รายการของขอ้ช ความใน log ปจฟั จบุค ลนั
log(format,values)
Logger เขีขยนสตรรงไปท่ิีรข logging console

Logger เขียข นสตรรงทริขีถ่ บกู จดัล รูบปแบบไปทีิขร่ logging console
โดยใชร้ช ปูบ แบบและคาค่ ทิขี่รร ะบุค

17.2. log()

log() เป็ปนเมถอดทืี่ใคง ช้คเขีคยนผลจสำกกสำรรลันโคค้ด ใหค้อย่ยูในรยปแบบขค้อควสำมลงในหนค้สำตสู่ย ำง Console (ขณะอยูย่
ในหนส้ค ำโปรเจ็คก Google Apps Script กด <Ctrl><Enter> เพื่งอเปดิป Logs )

สสำมสำรถใชค้ %s ใสยู่ลงไปใน log() เพื่งอรัลบคยู่สำจสำกตัลวแปรมสำใสยู่ หรงอ จะใสยู่ตัวล แปรตรงๆลงไปใน log() ก็กไดค้
แตู่ยก็กจะมคีค วสำมแตกตสยู่ ำงกันล ใหคส้ ลงั เกตจถ สำกตวัล อยู่ยสำงตอูย่ ไปนีคซ

ตวร อยสม่ ำง

var groups = GroupsApp.getGroups();
Logger.log('You are a member of %s Google Groups.', groups.length);

ผล

อกท ตรวอยส่ม ำง

var values = [1,2,3];
Logger.log('Values is %s' , values) ; // พรมพใต์ น Logger : Values is [1.0, 2.0, 3.0]
Logger.log('Values is' + values) ; // พมร พใ์ต น Logger : Values is 1,2,3

214 หลัลกการเขยขี นโปรแกรม Google Apps Script โดย วสนัล ต์ต คณคุ ดลร กเศวต ([email protected])

17.3. คลสำส console

Class console
https://developers.google.com/apps-script/reference/base/console

คลสำส console ชวู่ย ยใหค้เรสำเขียค นบลนั ทถกึ ไปยลงั บริกพ สำร Stackdriver Logging ของ Google Cloud Platform

คลสำส console ใชค้งสำนคลสค้ ำย Logger มสำก มคเี มถอด log() ทีคงื่ใชค้งสำนเหมงอนกนัล และแสดงผลท่ีคเงื ดีคยวกลัน

ตวลั อยสยู่ ำง : จบัล เวลสำกสำรทสส ำงสำนของสครพิปตล

function test(){ // เริ่มร จลบั เวลา
// หยดุค จลับเวลา และ แสดงผลทขีริ่ console
var x = 10 ;
x++

console.time("label")

Logger.log("Longger : " + x )

console.log("console : " + x )

console.timeEnd("label")
}

ผล

Log

[01] Longger : 11
[02] console : 11
[03] label: 6ms

บททิ่ขีร 17 : คลาส Logger และ console 215

216 หลลักการเขขียนโปรแกรม Google Apps Script โดย วสันล ต์ต คณุค ดลร กเศวต ([email protected])

บททีทข่ 18
Triggers

18.1. Triggers คอรื อะไร

Triggers ใชร้ค ันล ฟงฝั กลชนืลัง่ แบบอตัล โนมตลั พิ เช่ยูน เมงือ่ มีคเหตกถ สำรณลเกพิดขซนถึ เมง่อื เปปิดไฟลล เปป็นตค้น
Triggers มคี 2 แบบดค้วยกนลั กค็ก งอ Simple Triggers และ Installable Triggers

18.2. Simple Triggers

Simple Triggers
https://developers.google.com/apps-script/guides/triggers

Simple Triggers เป็นป กลูถ่มย ฟงัฝ กลชืง่ันล สงวน เช่นยู ฟัฝงกลชืงัล่นทใคื่ีง ชค้ชอืง่ onOpen(e) ช่ืงอนคีซสงวนไวสค้ สสำหรบลั Trigger
โดยเฉพสำะ ฟงฝั กชล ืงนลั่ จะทสสำงสำนอตัล โนมตัล ิพเมงื่อไฟลล Google Apps อยส่ยู ำง Docs, Sheets, Slides หรอง Form ถยกเปดิป
อง่ืนๆมคีดัลงตู่ยอไปนีซค

onOpen(e)

รนัล เมืง่อ ผใ้คย ช้คงสำนเปปดิ ไฟลล Sheet, Docs, Sheets, Slides หรอง Forms

onEdit(e)

รนัล เมอืง่ ยสย เซอรเล ปลื่งยีค นคยสู่ ำในเซลลลใน Spreadsheet

onInstall(e)

รนัล เมงื่อ ยสย เซอรลตดพิ ตซลัง Addon (add-on)

onSelectionChange(e)

รนลั เมอ่ืง ยสย เซอรเล ปลงค่ยืี นกสำรเลงอกใน Spreadsheet

doGet(e)

รนัล เมอ่ืง ยยสเซอรลเปิดป Web App หรงอเมอง่ื โปรแกรมสูงย่ HTTP GET request ไปท่ืคีง Web App

(https://developers.google.com/apps-script/guides/web)
doPost(e)

รนัล เมงื่อ โปรแกรมสง่ยู HTTP POST request ไปทงีื่ค Web App
พสำรสำมพิเตอรล e กค็ก อง Event Object ทืงค่สี ่งูย ให้ฟค งัฝ กชล น่ืลัง บรรจถไปดคว้ ยขอ้ค มยลและเนองซ หสำเกื่งคียวกัลบ Event ทงืีค่เกพิด
ขึถนซ (ดเย พื่พมิง เตพมิ https://developers.google.com/apps-script/guides/triggers/events )
หมสำยเหตถุ
Simpple Trigger ใชค้ไดก้ค ัลบแอพชนพดิ แตกตยู่สำงกัลนไป บสำงตวัล ใช้ไค ดค้ บสำงตวลั ใชคไ้ มยูไ่ ดค้ ซงืงถ่ึ สสำมสำรถดยได้จค สำกลิงพ คล
ตอ่ยู ไปนซีค

Available types of triggers
https://developers.google.com/apps-script/guides/triggers#available_types_of_triggers

218 หลลักการเขยีข นโปรแกรม Google Apps Script โดย วสันล ต์ต คณคุ ดลร กเศวต ([email protected])

18.2.ก.) ตตัวอยยูา่ ง เมทอ่ีร คอลัตมนล A เปลยที่ น พมิพ พเล วลาไวคท้ คที่ อลตัมนล B

โคค้ดตอยู่ ไปนซคีเป็ปน Google Apps Script แบบฝงฝั ในไฟลล Google Sheet เมง่อื เปลคีย่งื นแปลงคูย่สำในเซลลลใน
คอลัลมนล A เซลลลขค้สำงๆในคอลัมล นล B ทต่ีคงื พิดกันล จะกรอกเวลสำลงไปอัลตโนมตลั พิ

โคค้ดนคซีถค้สำรัลนปกติพจะ Error เพรสำะไมู่ยมีค e สยู่งผยู่สำนมสำ ใหค้บัลนทึถกโปรเจก็คของ Google Apps Script ก็กใชค้ไดค้
แลว้ค จสำกนัซลนใหไค้ ปลองคคยี คล ู่ยสำตยูส่ ำงลงในคอลัมล นล A

function onEdit(e) {

Logger.log(e); // ดวูบ คา่ e มอขี ะไร –---- > [ 01 ]
Logger.log(e.source.getActiveSheet().getName()); // ดชูบ ่ิมือร ชีทนข้ ท่ิขีจร บัล มา –---- > [ 02 ]
Logger.log(e.range.getA1Notation()); // ดเบู ซลลตท์ จิข่รี บัล มา –---- > [ 03 ]

var formattedDate = Utilities.formatDate(new Date(), "GMT", "dd-MMM-yyyy HH:mm:ss") ;

if (e.range.getColumn() == 1) { // ถาช้ เปนป็ คอลมัล นต์ A

e.range.offset(0, 1).setValue(formattedDate) ;

}

}

formatDate

https://developers.google.com/apps-script/reference/utilities/utilities.html#formatdatedate,-timezone,-format

ผล

หสำกดผย ลกสำร Logs เพ่อืง ดวย ยสู่ ำ e เป็ปนอะไรจะไดค้ Logs ดังล นีคซ

[ 01 ] { authMode=LIMITED ,
range=Range ,
source=Spreadsheet ,
[email protected] ,
value=ccc }

[ 02 ] Sheet1
[ 03 ] A1

18.3. Event Objects

Event Objects
https://developers.google.com/apps-script/guides/triggers/events

เมง่ือ Triggers ทสสำงสำน Google Apps Script จะส่ยูงผยู่สำนสิ่ืงพงทีืง่คเรคียกวู่ยสำ Event Object ซ่ืงึถงบรรจถไปดค้วยข้คอมยล
และเนงซอหสำเก่คืงียวกัลบ Event ทีคงเ่ื กดพิ ขึถซน เชู่ยน เมงื่อ Submit form (คลิพกป่ถปุม SUBMIT เพ่งือสู่ยงสิ่ืพงงทืค่ีงกรอกลงในฟอรลม)
กจ็ก ะสู่งย ผูส่ย ำน Event Object ชอ่ืง Form Submit

บททขีริ่ 18 : Triggers 219

ตวร อย่สม ำง
โค้ดค ตูย่อไปนซคี จะใส่ยู Note ลงในเซลลทล คีงื่มีคกสำรเปลคง่ืียนแปลงโดยอลัตโนมัลติพ โดย Note ทงีใื่ค สู่เย ปป็น วัลนเวลสำทื่คีงแกค้ไข
คูย่สำในเซลลล
โปรเจ็กค Google Apps Script ตวลั นซีค ใหค้สรส้ค ำงแบบฝงฝั ในไฟลล Google Sheets
โคด้ค นซคีถ้คสำรันล ปกตพิ จะ Error เพรสำะไม่ยมู ีค e สู่ยงผ่สูย ำนมสำให้คฟังฝ กชล งั่นืล กสำรใช้งค สำนฟงัฝ กชล นงืล่ั นีคซ ใหบค้ ัลนทกึถ โปรเจ็คก
Google Apps Script โคด้ค ก็ใก ชคไ้ ดแ้ค ลค้ว โดยฟงฝั กลชงัล่นื จะรันล เอง เม่องื มีคกสำรเปลีงืคย่ นแปลงคสยู่ ำใน Google Sheets

function onEdit(e){
var range = e.range ;
range.setNote('Last modified: ' + new Date()) ;

}

ผล

220 หลักล การเขยขี นโปรแกรม Google Apps Script โดย วสนัล ต์ต คณุค ดรลกเศวต ([email protected])

18.4. Installable Triggers

Installable Triggers
https://developers.google.com/apps-script/guides/triggers/installable

Installable Triggers ต้คองมีคกสำรเซ็ตก กอยู่ น เพงอื่ ผกย ฟงัฝ กชล น่ืงัล ทจคีงื่ ะรันล กบลั Event ตวัล อยย่สู ำงเชนยู่ ใหค้ทสส ำ
ฟงฝั กลชงัลืน่ sendMall เมงอ่ื มบคี รรทดัล ข้อค มยลเพืมิพง่ เขส้ค ำมสำใน Google Sheets เมงื่อคลพกิ ปุ่มปถ Submit แบบฟอรมล เปนป็ ตนค้

เรสำสสำมสำรถสรส้ค ำง Installable Triggers ไดค้โดย
ทงีคื่หน้สค ำโปรเจค็ก Google Apps Script ไปที่ืคงเมนย Edit → Current Project’s Triggers จะเขคส้ ำสยู่หนค้สำ

Triggers

ทีงห่คื นค้สำ Triggers ตสำมภสำพ คลพิกทปีคงื่ จุม่ป Add Trigger จะปรสำกฎหนค้สำตสยู่ ำงมสำใหต้ค ลังซ ค่ยูสำ Trigger ตสำมภสำพถัดล
ไป

บททีขริ่ 18 : Triggers 221

ช่อูย ง Choose which fuction to run
ใช้เค ลอง กฟัฝงกลชงืนั่ล ในโปรเจกค็ Google Apps Script ทจ่คีืง ะรัลน
ชย่อู ง Select event source
ใชค้เลงอกวย่สู ำแหลงู่ย ของ event จะมสำจสำกไหน เช่นูย Form กกค็ งอ มสำจสำก Form
ชอู่ย ง Select event type
ใช้คเลงอก event เชู่ยน On form submit กก็คงอ เมงื่อคลพิกทืีค่งปุถ่ปม Submit เพง่ือสู่ยงคสส ำตอบในกสำรกรอกแบบ
ฟอรมล

เมองื่ คลกิพ ปปถมุ่ Save จะได้ค Trigger ตสำมภสำพ

222 หลลักการเขยีข นโปรแกรม Google Apps Script โดย วสนลั ตต์ คณคุ ดรลกเศวต ([email protected])

18.5. newTrigger()

How to create an automated calendar with Google Apps Script with open source on top
https://opensource.com/article/19/1/automate-calendar
deleteTrigger(trigger)
https://developers.google.com/apps-script/reference/script/script-app#deletetriggertrigger
คลาส Class ScriptApp
https://developers.google.com/apps-script/reference/script/script-app#newTrigger(String)

ใช้คเขสค้ ำถถงึ และจดัล กสำรกสำรเผยแพรู่ย สคริปพ ตแล ละ Triggers คลสำสนีซอค นญถ สำตใหค้ผค้ใย ชคง้ สำนสรส้ค ำง Triggers และ
ปลอู่ย ยสครปพิ คลในลกัล ษณะ Script as a service

คลาส TriggerBuilder
https://developers.google.com/apps-script/reference/script/trigger-builder.html
newTrigger(functionName) – เมถอดในคลาส ScriptApp
https://developers.google.com/apps-script/reference/script/script-app#newtriggerfunctionname

newTrigger() ใชส้ค รส้ค ำง Installable trigger โดยพสำรสำมพิเตอรล functionName คงอ ฟงฝั ชนลืงั่ ทีงคื่จะรันล เม่ืงอ
Trigger ทสส ำงสำน โดยจะคงนคส่ยู ำกลลบั มสำเป็ปนคลสำส TriggerBuilder

ตรวอยส่ม ำง – โคด้ค ตอู่ย ไปนซรคี นลั ฟงัฝ กชล ลังนื่ updateEvents ทกถ 5 นสำทีค โดยเมื่อง รัลนโคดค้ นคซี Installable trigger จะ
ถยกสรส้ค ำงดว้ค ย

function createTrigger() {
ScriptApp.newTrigger('updateEvents')
.timeBased()
.everyMinutes(5)
.create() ;

}

ตวร อยส่ม ำง – สรสค้ ำง Trigger ให้คกลบั Spreadsheeet ทสส ำงสำนเมง่อื Submit form

function createTrigger(){
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
ScriptApp.newTrigger("sendEmail")
.forSpreadsheet(ss)
.onFormSubmit()
.create() ;

}

บททขี่ิร 18 : Triggers 223

ตวร อยสม่ ำง – โคด้ค ตอยู่ ไปนีลคซ บ Trigger ทซงลั หมด ภสำยในโปรเจก็ค

function deleteTriggers(){
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0 ; i < triggers.length; i++) {
ScriptApp.deleteTrigger(triggers[i]);
}

}

ตวร อย่สม ำง – โคด้ค ตอ่ยู ไปนลซีค บ Trigger ทัลงซ หมด ภสำยในโปรเจ็กค และมกคี สำรจดลั กสำร Error ดว้ค ย

function deleteTriggers(){
var triggers = ScriptApp.getProjectTriggers() ;
triggers.forEach(function(trigger){
try{
ScriptApp.deleteTrigger(trigger) ;
}
catch(e)
{
throw e.message ;
};
Utilities.sleep(1000) ;
}) ; // Close - forEach

} // Close - function

224 หลลักการเขีขยนโปรแกรม Google Apps Script โดย วสนัล ตต์ คณุค ดลร กเศวต ([email protected])

บทท่ีทข 19
การใชูร้โปรเจจ็ค
Google Apps Script

ในไฟลอร์ ่ีทงน

19.1. กสำรนสสำโปรเจค็ซ Google Apps Script ไปใชค้ในไฟล์อย รีทื่น

How to export / import a Google Apps Script as a file into a new spreadsheet?

https://webapps.stackexchange.com/questions/57920/how-to-export-import-a-google-apps-script-as-a-file-into-a-new-spreadsheet

19.1.ก.) ปฝญั หาการใชงค้ าน 1 โปรเจคล็ (แบบฝงฝั ) ในหลายไฟลล
กรณคโี ปรเจกค็ Google Apps Script ของเรสำเปป็นแบบฝงัฝ ไฟลล หสำกโปรเจกค็ ฝังฝ อยยู่ในไฟลไล หน กจ็ก ะสสำมสำรถ
เรคียกใช้ไค ดเค้ ฉพสำะในไฟลลนนซลั
หสำกเรสำก๊กอปปีป้ไฟลล Google Apps เชยู่นก๊กอปปปี้ไฟลล Google Sheets มสำอคีกไฟลล โปรเจ็กคท่คืีงสรค้สำงไวค้จะติพดมสำ
ดวค้ ย แตู่ยโปรเจ็กคท่ตคีืง ิดพ มสำด้วค ย แมค้จะยงลั ใชค้ชอืง่ เดยคี วกนลั แตไู่ย ด้คกลสำยเปน็ป คนละโปรเจค็ก ไปแลค้ว
เมงื่อเป็ปนแบบดลังกลยู่สำว ก็จก ะเกพิดปฝัญหสำกสำรซสซสำซ้คอนของโปรเจ็กค และเวอรลชลังื่นของโปรเจ็กค ฉะนัลซน 1 โปรเจ็กค
สสส ำหรลบั Google Apps 1 ไฟลล จงึถ ไมยู่เวพิรคล
ฉะนรั้น จนงตค้องมทวิพธท ในกสำรนสสำโปรเจซ็ค Google Apps Script ไปใชค้ในหลสำยๆไฟลพ์ กสำรสร้คสำง Addon
เปป็นทสำงออกทคื่ีดง ีค(แตูยผ่ สยู่ ำนกสำรอนมถ ตัล โพิ คตรยสำก) อยสูย่ ำงไรกดก็ ีค มวท พิธทกสำรแชรโพ์ ปรเจซค็ (คนละอยสู่ย ำงกัลบกสำรแชรลสิพทธกิพ สำร
ใชคง้ สำนโปรเจคก็ ) ไปใหค้ไฟลพ์อทน่รีื เรทยกใชงค้ สำนได้ค โดยยังล ไมตูย่ คอ้ งไปถถึงขันลซ กสำรสร้คสำง Addon
19.1.ข.) การนาส โปรเจค็ล Google Apps Script ไปใช้ใค นไฟลลอรีทน่

ขนรั้ ตอน
1. (ทไคงืี่ ฟลลหลลักทเ่คืงี รสำสรส้ค ำงโปรเจคก็ Google Apps Script) สรค้สำงเวอร์ชพ ่ีทนร ใหคก้ บร โปรเจ็ซค

1.1 ทคีืโ่ง ปรเจคก็ Google Apps Script ไปทีเ่งคื มนย File → Manage Versions
1.2 (ทคีื่งหนค้สำต่สยู ำง Manage Versions ) บลันทึถกเวอรลชล่ังืน

ก.) ตซังล ช่ือง เวอรลชน่ืลงั อะไรกไก็ ด้ค เชยู่น 1.0 Begin
ข.) คลิกพ ปุถ่มป Save new version จะได้คเวอรชล นลังื่ ของโปรเจคก็ ตสำมภสำพ
ค.) คลพิกปถมปุ่ OK

226 หลกัล การเขขียนโปรแกรม Google Apps Script โดย วสัลนต์ต คณุค ดลร กเศวต ([email protected])

2. (กลบลั มสำทื่โคีง ปรเจก็ค Google Apps Script) ดคมู ทยพข์ องโปรเจซ็ค
2.1 ไปทงคี่ืเมนย File → Project Properties
2.2 ทงคีหื่ นส้ค ำตส่ยู ำง Project Properties แท็บก Info หัวล ขค้อ Product key (Deprecated) จดคทยเ์พ อสำไว้ค

3. ททไี่ ฟล์พ Google Apps(ไฟล์ใพ หมม่) ทท่ตี อค้ งกสำรจะเรยท กใช้ค Script – ลพิงค์พ Resource
3.1 สรส้ค ำงโปรเจก็ค Google Apps Script ( Tools → Script Editor )
3.2 (ทโ่งีคื ปรเจก็ค Google Apps Script) ระบถทุ ่แที หลง่ม ทที่มสำของโปรเจ็ซคททีจ่ ะเรยท กโคค้ดมสำใช้คงสำน
ก.) ไปทเีงคื่ มนย Resources → Libraries จะปรสำกฎหนสค้ ำตสยู่ ำง Libraries

3.3 (ทีืค่หง น้คสำตสยู่ ำง Libraries) เพพ่ีิทม Resource ใหก้ค รบโปรเจค็ซ
(โค้ดค ของโปรเจก็คทงคืเ่ี ป็นป Resource จะกลสำยเป็ปน Library ของโปรเจคก็ นคีซ)
ก.) ชูอย่ ง Add Libraries ใสยู่ Product Key ลงไป (คียค ลของโปรเจ็คก ในไฟลหล ลกัล )
ข.) คลกพิ ป่มปถุ Add – แหลูง่ย ทคงืี่มสำของโปรเจ็คก จะถยกเพืงิพ่มเปน็ป Library
ค.) ชยู่อง Version เลอง ก เวอรชล ัตีท่นของโปรเจ็ลค เชู่ยน 1.0 begin
ง.) ชอ่ยู ง Identifier จสส ำชีทือ่ร ไวค้ ตสำมภสำพกกค็ อง WKPowerScript เพรสำะตอ้ค งนสส ำไปใชค้เรยีค กใช้โค คดค้ จสำก
โปรเจคก็ ตนค้ ทสำง

บทท่ิขรี 19 : การใชช้โปรเจคก็ Google Apps Script ในไฟลต์อิ่มรนื 227

จ.) Development mode เลงอกเป็ปน On/Off แล้ควแตู่เย รสำ
ถสค้ ำตน้ค ทสำงบนัล ทึถกเวอรชล ื่ังนล นคีซใหมู่ย เชนยู่ 1.0 Begin
ถคส้ ำเลอง กเปป็น On เรสำจะเรคยี กใชคโ้ คด้ค ลสยู่ ำสดถ ไดด้ค ว้ค ย
ถ้คสำเลงอกเป็ปน Off เรสำจะเรีคยกใช้ไค ดเ้ค ฉพสำะโคดค้ ตอนทีืง่ลค พิงคล Resource โคด้ค ทง่ืคีพัลฒนสำใหมยู่จะไมู่ยลพิงคมล สำ

4. ทคไงี่ื ฟลล Google Apps(ไฟลใล หม)ู่ย ทตงื่ีค ้อค งกสำรจะเรียค กใช้ค Script
4.1 เขทยนโคด้ค เพีทือ่ร เรยท กใช้คฟงฟั กช์พ ที่นร จสำก Resource

ตวร อยส่ม ำงทท่ี 1

function myFunction() {
// เรขียกใชชฟ้ ฟงั กช์ต ริล่นั onOpen() จาก Resource WKPowerScript ทรล่ขีิ งร คก์ต นลั อย่บูค
WKPowerScript.onOpen();
}

ตวร อยส่ม ำงทที่ 2

// ฟงฟั กช์ต น่ลรัิ นขีน้ สง่ค ผา่ค น Agrument และ รับล คาค่ กลบลั มา
function BAHTTEXT(number) {

return WKPowerScript.BAHTTEXT(number);
}

หมสำยเหตุถ
ปัฝจจถบลัน Google ได้คสร้คสำงฟฝังกลชงัื่ลน BAHTTEXT ใน Google Sheets ให้คเปป็นฟฝังกลชืงัล่น Built-in แลค้ว สสำมสำรถ
เรยีค กใชค้ได้เค ลย ไมตู่ย ้อค งเขคยี นสครพิปตลอกคี แลว้ค

228 หลักล การเขยีข นโปรแกรม Google Apps Script โดย วสันล ต์ต คณุค ดรลกเศวต ([email protected])

Resource มีคฟฝังกลชลืง่ันอะไรใหค้เรีคยกใชค้บค้สำง สสำมสำรถทสสำ AutoComplete ได้คเหมงอนกลับคลสำสของ Object
ทวงืลั่ ๆไป

19.1.ค.) การนาส โปรเจ็คล ไปใชค้ในไฟลอล ่นรที แบบขค้าม Account และ ขา้ค ม Domain
การนาส โปรเจ็ลคไปใชค้ในไฟลลอรที่นแบบขค้าม Account และ ข้คาม Domain สสำมสำรถทสส ำได้คโดย แชรลโค้คดไปให้ค
บลัญชีค Google อืง่นๆ หรงอคนอืง่นๆนอกโดเมนได้ค เชยู่น จสำก @gmail แชรลไปให้ค @snpfood ใช้คได้ค เพทยงแต่มโปร
เจ็ซค Google Apps Script ทใ่ีท ชค้เกซ็บ Library ของโค้ดค ต้คองเป็นป Standalone

19.1.ง.) สรุจป

บททิรี่ข 19 : การใช้ชโปรเจค็ก Google Apps Script ในไฟลตอ์ ริืมน่ 229

วพิธคีกสำรใชค้งสำนโปรเจก็ค Google Apps Script 1 โปรเจ็กคหลสำยไฟลล ตสำมทืีง่คได้คอธพิบสำยในขค้อนซีค มีคขค้อดีคทงื่คีเรสำ
สสำมสำรถเขียค นโคค้ดไดใ้ค นโปรเจค็ก หลลกั ตวัล เดียค ว แลคว้ โปรเจคก็ อื่นง ๆสสำมสำรถเรคยี กใชคโ้ คค้ดจสำกโปรเจ็กคหลลักได้ค

อยสู่ย ำงไรกด็ก คี ไฟลพท์ ี่ทเรทยกใชกค้ ซต็ อ้ค งสรค้สำงโปรเจ็ซคอยดมู่ ท
หสำกโปรเจก็คของเรสำ ยยสเซอรลจสสำเป็นป ต้คองใชโ้ค ปรเจ็กค Google Apps Script กลนั เปนป็ จสสำนวนมสำก และไมูอย่ ยสำก
ยยู่งถ ยสำกกลับกสำรสรค้สำงโปรเจก็คอกีค ทสำงออก กก็คอง กสำรสรค้สำง Addon

230 หลกลั การเขขยี นโปรแกรม Google Apps Script โดย วสนัล ตต์ คณุค ดลร กเศวต ([email protected])


Click to View FlipBook Version