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 เซอร์วิส Spreadsheet

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

Google Apps Script เซอร์วิส Spreadsheet

Google Apps Script เซอร์วิส Spreadsheet

25 มม.ย. 2020

พมมพพค์ รรั้งท่ีท 1 : 3 ธ.ค. 2019
พมมพค์พ รง้ัร ทท่ี 2 : 2 เม.ย. 2020
พมม พ์พคร้ัรงท่ีท 3 : 25 มม.ย. 2020

Google Apps Script
เซอรว์ร ิสว Spreadsheet

เรยีร บเรยรี งโดย
วสัสนต์ต คณุค ดดิลกเศวต

[email protected]
Line ID : wasankds

08-1459-8343
www.poeclub.org

สารบญบั

สารบญบั ...............................................................................4

คคานาค ................................................................................12

บททที่ 1 การบันบ ททึก Macro ใน Google Sheets..............................15

1.1. การบนร ทกึท Macro ใน Google Sheet ...................................................................16
1.1.ก.) ขัข้นตอนการบนข ทกทึ Macro (16)
1.1.ข.) การเรรยี กใช้ช Macro (17)
1.1.ค.) ดโูด คช้ดท่รที Macro สรา้ช ง (17)

1.2. Macro แบบ Absolute และ Relative .................................................................18
1.2.ก.) Macro จดข รดูปแบบเซลล์บล ขนทึทกแบบ Absolute และ Relative (18)
1.2.ข.) Macro บนข ททึก Alternating Colors (19)

บทท่ีท 2 เรทยกใช้เช ซอรว์ร วสิ Spreadsheet........................................21

2.1. เรทยกใชช้เซอร์พวสม Spreadsheet ............................................................................... 22
2.2. จบร ไฟลท์พ ทแี่ อค็อ ททฟ ..................................................................................................... 22

2.2.ก.) getActiveSpreadsheet() (22)
2.2.ข.) getUrl(), getId() และ getName() (23)
2.2.ค.) getName() (23)
2.3. flush() ................................................................................................................... 24

บททท่ี 3 ไฟล.ร์ .......................................................................25

3.1. การเปิปดไฟลพ์ ............................................................................................................ 26
3.1.ก.) openById() และ openByUrl() (26)
3.1.ข.) open() (26)

3.2. การสร้ชางไฟลพ์ .......................................................................................................... 27
3.3. หน้าช ตตา่ งแบบต่ตางๆ .................................................................................................. 27

3.3.ก.) toast() (27)
3.3.ข.) show() (28)

บทที่ท 4 ชช้ทที ..........................................................................29

4.1. จรบชทัรท้ ตต่อจากไฟลพ์ ................................................................................................... 30
4.2. getActiveSheet() ................................................................................................ 30
4.3. getSheets() .......................................................................................................... 30
4.4. getSheetByName() ............................................................................................ 30
4.5. insertSheet() ....................................................................................................... 31
4.6. deleteSheet() ..................................................................................................... 32
4.7. activate() ............................................................................................................. 33
4.8. getParent() .......................................................................................................... 33
4.9. การลา้ช งชทรทั้ .............................................................................................................. 33

4.9.ก.) clear() (33)
4.9.ข.) clearContents() และ clearFormats() (34)

บททที่ 5 การจดบั การแถว หรรือคอลมบั นร์..........................................35

5.1. การแทรกแถว ......................................................................................................... 36
5.2. การลบแถว ............................................................................................................. 37

บททท่ี 6 เรชน้ จ.์ร ......................................................................39

6.1. จรบเร้ชนจพ์ .................................................................................................................. 40
6.2. getRange() ........................................................................................................... 40

6.2.ก.) getRange(row, column) (40)
6.2.ข.) getRange(row, column, numRows) (40)
6.2.ค.) getRange(row, column, numRows, numColumns) (41)
6.2.ง.) getRange(a1Notation) (41)
6.3. getLastRow() และ getLastColumn() ................................................................41
6.4. getA1Notation() ................................................................................................. 42
6.5. getCell() ............................................................................................................... 42
6.6. getDataRegion() .................................................................................................. 43
6.6.ก.) getDataRegion() (43)
6.6.ข.) getDataRegion(dimension) (43)
6.7. getDataRange() ................................................................................................... 44
6.8. getValue() และ getValues() .............................................................................. 46
6.9. getDisplayValue() และ getDisplayValues() ...................................................47

6.10. จบร เรนช้ จจพ์ ากชชท่ีอเรช้นจพ์ (Named ranges) ...............................................................47
6.10.ก.) getRangeByName() (47)
6.10.ข.) getNamedRanges() (48)
6.10.ค.) setNamedRange() (49)
6.10.ง.) removeNamedRange() (50)
6.10.จ.) setRange() และ setName() (50)
6.10.ฉ.) remove() (51)

6.11. offset() ............................................................................................................... 52
6.12. setValue() และ setValues() ............................................................................ 53
6.13. นาน คอลรมน์มพ าคนานวณ แลช้ววางผลลรพธ์ไพ วค้ช อลรมน์ขพ ช้างๆ ..........................................54
6.14. กรอกสูสตรลงเซลล์พ ................................................................................................. 55

6.14.ก.) setFormula() (55)
6.14.ข.) setFormulaR1C1() (56)
6.15. getActiveRange() .............................................................................................. 57
6.16. getRow(), getColumn(), getNumRows(), getNumColumns() ...................58
6.17. การล้ชางเนรชอั้ หา และ การลชา้ งรูสปแบบ .....................................................................59
6.17.ก.) clearContents() (59)
6.17.ข.) clearFormats() (59)
6.18. appendRow() .................................................................................................... 59
6.19. โนชต้ ...................................................................................................................... 60
6.19.ก.) setNote() และ setNotes() (60)
6.19.ข.) clearNote() (61)

บทท่ีท 7 กลลุม่ ของเรชน้ จ.์ร ...........................................................63

7.1. getRanges() ......................................................................................................... 64
7.2. getActiveRangeList() .......................................................................................... 64
7.3. getRangeList() ..................................................................................................... 65
7.4. getSelection() และ getCurrentCell() ..............................................................65
7.5. setActiveRange() ................................................................................................ 67
7.6. setCurrentCell() ................................................................................................. 67
7.7. activate() ............................................................................................................. 68
7.8. getNextDataCell() และ getNextDataRange() .................................................68

7.8.ก.) getNextDataCell() (68)
7.8.ข.) getNextDataRange() (69)

บทท่ที 8 รรูปแบบ....................................................................71

8.1. setNumberFormat() .......................................................................................... 72
8.1.ก.) setNumberFormat() (72)
8.1.ข.) setNumberFormats() (72)

8.2. เสชน้ ขอบ ................................................................................................................. 73
8.3. แบค็อ กราวนพ์ ............................................................................................................. 74

8.3.ก.) setBackground() และ setBackgrounds() (74)
8.3.ข.) setBackgroundRGB() (75)
8.3.ค.) ลิลงค์เล คร่ีอรท งมรอชชว่ ยเลรอกสีร (76)
8.3.ง.) setBackgroundObject() (76)
8.4. กนาหนคุคณลกร ษณะให้ชกบร เร้นช จพ์ ................................................................................... 78
8.4.ก.) setFontFamily() และ setFontFamilies() (78)
8.4.ข.) setFontSize() และ setFontSizes() (78)
8.4.ค.) setFontWeight() และ setFontWeights() (79)
8.4.ง.) setFontStyle(fontStyle) และ setFontStyles(fontStyles) (80)
8.4.จ.) setFontColor() และ (80)
8.4.ฉ.) setHorizontalAlignment() (81)
8.4.ช.) setVerticalAlignment() (81)
8.4.ซ.) setFontLine(fontLine) (82)
8.5. ตวร อยาต่ งการกาน หนดรสูปแบบหลายอยา่ต งใหก้ช บร เรช้นจ์พ ..................................................83
8.6. Text wrapping ..................................................................................................... 84
8.6.ก.) getWrapStrategy() และ getWrapStrategies()(84)
8.6.ข.) Enum WrapStrategy (84)
8.6.ค.) setWrapStrategy() และ setWrapStrategies()(85)
8.6.ง.) setWrap(isWrapEnabled) และ setWraps(isWrapEnabled) (85)
8.7. Text Style ............................................................................................................ 86
8.7.ก.) newTextStyle() และ setTextStyle() (86)
8.7.ข.) เมถอดทีร่ทใชก้ช าก หนดรดูปแบบของขชอ้ ความ (87)
8.8. Rich Text Value .................................................................................................. 88

บททท่ี 9 การก๊กอปป.ป ................................................................91

9.1. copyTo() คลาส Range ........................................................................................ 92
9.1.ก.) copyTo(destination) (92)
9.1.ข.) copyTo(destination, options) (93)
9.1.ค.) copyTo(destination, copyPasteType, transposed)(94)

9.2. กอ๊ก ปป้ปีรปูส แบบไปที่เท รชน้ จ์พ ........................................................................................... 95
9.2.ก.) copyFormatToRange() (95)

9.3. กอ๊ก ปปไ้ปี ฟล์พ Google Sheets ดว้ช ย copy() ..............................................................96
9.3.ก.) copy() (96)

บททีท่ 10 Banding หรือร Alternating Colors.................................99

10.1. applyRowBanding() ....................................................................................... 100
10.2. จรบ Banding ...................................................................................................... 101
10.3. การลบ Banding หรชอ Alternating Colors .....................................................101

บททที่ 11 Data validation......................................................103

11.1. สร้าช ง Data validation ใหกช้ บร เซลลพใ์ นเรช้นจพ์ .......................................................104
11.1.ก.) คลาสและเมถอดทีทร่สาก คญข (104)
11.1.ข.) ตวข อยชา่ งทที่ร 1 (105)
11.1.ค.) ตขวอยา่ช งททีร่ 2 (105)

11.2. ดูสและอรพเดท Data validation .........................................................................106
11.2.ก.) getDataValidation() (106)
11.2.ข.) getDataValidations() - มีร s (109)

11.3. Checkboxes .................................................................................................... 111
11.3.ก.) insertCheckboxes() (111)
11.3.ข.) requireCheckbox() (112)

บททที่ 12 การเรทยง (Sorting)..................................................115

12.1. การเรทยงขชอ้ มลูส โดยใชเช้ มถอด sort() ....................................................................116
12.1.ก.) การเรรียงขอช้ มูลด ในเร้นช จ์ล (เมถอดในคลาส Range)(116)
12.1.ข.) การเรีรยงขช้อมดูลในชั้ีรขท (เมถอดในคลาส Sheet) (118)

บทท่ีท 13 ฟฟิลเตอรร์ (ตัวบ กรอง)..................................................119

13.1. คลาสทท่เี กยที่ วขชอ้ งกบร ฟลิป เตอรพ์ ............................................................................... 120
13.2. การจรบฟิลป เตอร์พ ................................................................................................... 120

13.2.ก.) เมถอดทีรท่เกยท่ีร วขชอ้ ง (120)
13.2.ข.) ตวข อย่าช งทีทร่ 1 : จขบฟิฟลเตอรล์ทีรท่กรองแบบ Filter by values ไวชอ้ ยชา่ งเดยีร ว (121)
13.2.ค.) ตขวอยา่ช งทที่ร 2 : จบข ฟิลฟ เตอรล์ทกร่ีท รองแบบ Filter by values และ Filter by condition (122)
13.3. การสร้ชางฟิปลเตอรพ์ ............................................................................................... 123
13.3.ก.) เมถอดททีร่เกรีท่ยวขอ้ช ง (123)
13.3.ข.) ตวข อยา่ช งที่รท 1 ใสฟ่ช ฟิลเตอรล์ให้กช ขบเรช้นจ์ล (124)
13.3.ค.) ตวข อยาช่ งทีท่ร 2 ใสฟช่ ิฟลเตอรล์ใหช้กขบเร้ชนจแ์ล ละกรองแบบ Filter by values (125)
13.4. การแกชไ้ ขกฎการกรอง ......................................................................................... 125
13.4.ก.) ตขวอย่าช งทีรท่ 1 (125)
13.4.ข.) ตวข อย่ชางท่ีทร 2 ฟลิฟ เตอร์ลโดยใช้ชคช่าในเซลลล์(Dropdown) (126)
13.5. การถอดกฎการกรองหรชอถอดฟปลิ เตอร์พ ................................................................127
13.5.ก.) remove() - ถอดกฎการกรอง (127)
13.5.ข.) removeColumnFilterCriteria() - ถอดคอลมข นล์ททีรม่ รีการกรอง (127)

13.6. การเรยท งข้อช มูลส ผลการกรอง ................................................................................. 127
13.7. withCriteria() ................................................................................................... 128

13.7.ก.) เมถอดที่รเท กทีย่ร วขอ้ช ง (128)
13.8. กฎการกรองแบบ Filter by condition ............................................................129

13.8.ก.) ตวข อย่ชางท่รีท 1 – whenTextContains() (129)
13.8.ข.) ตวข อยชา่ งทร่ที 2 – whenDateEqualTo() (130)

บททีท่ 14 การสร้ชาง Chart......................................................131

14.1. สร้าช ง Bar Chart ................................................................................................ 132
14.1.ก.) ตวข อยชา่ งการสราช้ ง Bar Chart - คอลขมนล์ Cost (132)
14.1.ข.) ตวข อย่าช งการสรา้ช ง Bar Chart- คอลขมน์ล Total (133)

14.2. newChart() และ build() ................................................................................134
14.3. setChartType() ............................................................................................... 134
14.4. addRange() ..................................................................................................... 135
14.5. setNumHeaders() .......................................................................................... 135
14.6. setPosition() ................................................................................................... 135
14.7. setMergeStrategy() ........................................................................................ 136
14.8. insertChart(), updateChart() และ getChart() ...........................................137

14.8.ก.) ตวข ยา่ช งทรีท่ 1 (137)
14.8.ข.) ตวข ยา่ช งทรที่ 2 (138)
14.9. จบร ชารตพ์ เปน็ป ภาพ ............................................................................................... 138
14.9.ก.) ส่ชงเมลล์ (138)
14.9.ข.) ใสช่ไวช้ในชีั้รขทอีร่นท (139)

บทท่ีท 15 Drawing และ Over Grid Image.................................141

15.1. Drawing(รปูส วาด) .............................................................................................. 142
15.2. Over Grid Images ........................................................................................... 143

บททที่ 16 User Interfaces.....................................................145

16.1. การสรา้ช งเมนูส ...................................................................................................... 146
16.1.ก.) คลาสและเมถอดททีรส่ กาคขญในการสร้ชางเมนูด (146)

16.2. alert() ............................................................................................................... 148
16.3. prompt() .......................................................................................................... 149
16.4. Custom dialogs ( Modal Dialog ) ...............................................................151

16.4.ก.) ตวข อย่าช ง : แสดง Dialog (151)
16.5. Custom sidebars ............................................................................................ 152

บททที่ 17 คลาส Browser......................................................155

17.1. msgBox() ......................................................................................................... 156
17.2. inputBox() ....................................................................................................... 157

บททีท่ 18 การประยลกตใ์ร ชง้ช าน..................................................159

18.1. การกรองแถวซรัาน้ ทัมรง้ ............................................................................................ 160
18.2. Data Lookup ................................................................................................... 161

บททท่ี 19 วับนและเวลา...........................................................163

19.1. สร้าช งวรตถวุค นร ทีแ่ท ละเวลา ...................................................................................... 164
19.1.ก.) new Date() (164)
19.1.ข.) +new Date() (165)

19.2. การทนางานกบร วรนทที่และเวลา ............................................................................... 165
19.3. การคนานวณเกท่ยี วกบร เวลา .................................................................................... 167
19.4. setHours() ....................................................................................................... 168

บทท่ีท 20 ฟัฟงกร์ชนับ่ีท , เมถอด และ คลณสมบตบั วิ ทท่นี ลาุ่ สนใจ.....................169

20.1. toString() ......................................................................................................... 170
20.2. String() ............................................................................................................. 170
20.3. toLowerCase() และ toUpperCase() ............................................................171
20.4. PI ....................................................................................................................... 172
20.5. isNaN() ............................................................................................................. 172
20.6. Number() ........................................................................................................ 173
20.7. split() ................................................................................................................ 173
20.8. parseInt() ......................................................................................................... 174
20.9. charAt() ........................................................................................................... 175
20.10. charCodeAt() ................................................................................................ 175
20.11. fromCharCode() .......................................................................................... 176
20.12. trim() .............................................................................................................. 176
20.13. substr() และ substring() .............................................................................. 177
20.14. search() ......................................................................................................... 178
20.15. replace() ........................................................................................................ 179
20.16. match() .......................................................................................................... 180
20.17. includes() - Chrome V8 ............................................................................. 180
20.18. IndexOf() ....................................................................................................... 181
20.19. lastIndexOf() ................................................................................................ 181
20.20. toFixed .......................................................................................................... 182
20.21. toPrecision() ................................................................................................. 182
20.22. valueOf() ....................................................................................................... 183

บททีท่ 21 Script Properties...................................................185

21.1. Script Properties คชออะไร ? ............................................................................ 186
21.2. การสร้ชาง Script Properties แบบกรอกค่าต เอง ..................................................186
21.3. การจบร Script Properties ................................................................................ 186
21.4. การสรา้ช ง Script Properties โดยการเขยท นสครมปต์พ ............................................187

21.4.ก.) setProperty() (187)
21.4.ข.) setProperties() (188)
21.5. deleteAllProperties() และ deleteProperty() ............................................189

บทท่ที 22 Regular Expression................................................191

22.1. Regular Expression คอช อะไร ? ........................................................................192
22.1.ก.) Regular Expression ครออะไร ? (192)
22.1.ข.) การใชช้งาน Regular Expression ใน Apps Script (192)

22.2. Regular Expression Systax ทสที่ นาคญร .............................................................193
22.2.ก.) Regular Expression Systax ทีรท่สาก คญข (193)
22.2.ข.) การผสม Regular Expression ท่รีนท ่าช สนใจ (194)

22.3. การคช้นหาและแทนททโ่ี ดยใช้ช Regular Expression .............................................197
22.4. RegExp() .......................................................................................................... 197
22.5. exec() ............................................................................................................... 198
22.6. test() ................................................................................................................. 199



คคานคา

หนขงสอร เล่มช น้ขัรี เป็ปนหนึทงี่ ในชุดช การเขยท นโปรแกรม Google Apps Script โดยในเล่มช นี้อขัร ธลบิ ายการใชชง้ าน
เซอร์วพ สม Spreadsheet ก็คก อร เซอรล์วิสล สกาหรขบการใช้ชงาน Google Sheets นทีนข่ เอง

นอกเหนรอจากเนอรขั้ หาดงข กลา่ช ว อะไรทีทร่สาก คขญททรี่เก่ีทรยวข้อช งกอ็ก ธิบล ายไว้ดช ว้ช ย เชช่น Regular Expression, วนัว ทที่และ
เวลา เปป็นตนช้

ผเ้ชูด ขรยี น เขรยี นหนขงสอร เลม่ช นรีัข้ จดชุ ประสงคด์ล ขงั้ เดลิม กค็ก อร เกบอ็ ไว้ชอ่าต นเอง

เมีรอ่ท ผ้ชูดเขยีร นศึทกษาเรอีท่ร งอะไร กจ็ก ะไปเรีรยนร้ชูจด ากสทรี่อออนไลน์ลในอลินเตอร์ลเน็กต ทข้ังคอร์ลสออนไลน์ล วลดิ รีโอ หรรอ เอกสาร
ทขง้ั ในแบบฟรรแี ละเสยรี เงลนิ

แตยช่ คุช นข้รีั เราต้ชองเรียร นรดชู้อะไรให้ชเรว็ก โดยเฉพาะเรรทอ่ี งของ IT ผูเดช้ ขีรยนจงึท ตั้งข ใจจะดวูด ิดล ีรโอเพรียงรอบเดยีร ว จทึงดดไู ป พมิล พล์
สรุชปไปดวช้ ย เวลาจกาอะไรไมช่ไดช้ มาดูดจากที่รทพิลมพล์สรุชปไว้ช งช่ายกว่ชาการไปย้ชอนดูดจากวิลดีรโอ นอกจากน้รัขีกก็ยขงนกามาทบทวนไดช้
งา่ช ย ในอนาคตสามารถเพี่มทิล เตลมิ เสรลิมแต่งช เนัรข้อหาได้ชเรีร่อท ยๆดว้ช ย

หากเนรั้อช หา ไมต่ละเอทยด อาต่ นแลช้วไมตเ่ ขาช้ ใจ หรอช ไม่ไต ดแ้ช ปลเปป็นไทยในบางส่ตวน ตอช้ งขออภรยไว้ช ณ ทท่ีนัทร้ เพราะ
ผสชู้เขทยนเขทยนโปรแกรมไป(ตามท่ีทลสูกคช้าวต่าจ้ชาง) แล้ชวกอ็ไปศทึกษาส่ตวนท่ีทเก่ทียวข้ชอง จากนรั้นกอ็เขทยนลงในหนรงสชอเก็อบไว้ช
บางทงท านก็เอ ร่งต มาก จนไม่ตมทเวลาเขทยนอยตา่ งละเอยท ด

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

เนชที่องดชว้ ย ผชสเู้ ขยท นใหค้ช วามสาน ครญกบร ประเดอ็นดาช้ นลขม สทม ธมธิ์มาก ฉะนรั้นจทงึ ขอแจ้ชงไวช้ ณ ท่ทีน้ทัร ตรัง้ แตต่ต ชน้
กค็อ อช

1. เนรั้ขอหาในหนขงสอร ผดชู้เขียร นรวบรวมมาจากแหลชง่ ตาช่ งๆในอินล เตอรเล์ น็ตก โดยจะพยายามใหมช้ ากทร่สีท ดชุ ทจีท่ร ะบอก
ลงลิ ค์ลหรอร แหล่ชงททีร่มาในแต่ชละหวข ขช้อ เพราะหนงข สรอเลช่มนัขรี้ถดกู เขีรยนไวน้ช านแลช้ว บางเรอ่ีทร งกก็ลมร ก๊กอปป้ีปลลงิ คม์ล าแปะไว้ช

2. ผ้ดเูช ขยีร นรวบรวมเนัรข้อหามาจากแหล่งช ตา่ช งๆ และเขรียนเพมีทล่ิ เตมิล ไปดวช้ ย
3. หนขงสรอเลม่ช นรัขี้แจกฟรีร ผด้ชูเขรยี นไมม่ช รีร ายไดช้จากหนขงสรอเลช่มนขีรั้

หนรงสชอเลต่มนรั้ทยรงไม่ตจบเสทยททเดทยว หากผสชู้เขทยนวต่าง จะมาเขทยนเพ่มีทมเตมมเรท่ีชอยๆ ให้ชดูสเวอร์พชี่รทนตามวรนทท่ีทท่ีปลต่อย
หนงร สชอ

วสขนตล์ คุชณดลลิ กเศวต

[email protected]
081-459-8343

Line ID : wasankds



บททท่ี 1
การบบนั ทึกท Macro
ใน Google Sheets

ทีทร่มา

คอร์รสออนไลนร์ Apps Script Blastoff! (เรทยนฟรท)
https://courses.benlcollins.com/courses/435404/lectures/6708124

1.1. การบบนั ทึทก Macro ใน Google Sheet
1.1.ก.) ขั้นขว ตอนการบัวนทึทก Macro

Macro เป็ปนโปรแกรมเลก็กๆ ทรท่ีสรช้างโดยการบขนททึกข้ัขนตอนการทาก งาน เชช่น พลิมพล์ คลิลก เป็ปนตช้น จากนขั้น
ระบบจะสร้าช งเปน็ป โคช้ดของ Google Apps Script ใหช้อตข โนมตข ิล

ขันร้ ตอนการบรนททึก Macro จรดรสปู แบบเซลลพ์ - ใชช้ Absolute
1. ไปท่เรีท มนูด Tools → Macros → Record จะปรากฎตา่ช งตามภาพ

1.1 เลอร ก Use absolute references

2. ทกางาน - โดยทกาคกาสงีทข่ ตช่างๆ เชช่น คลมกเมา้ช สพ์ พมม พ์พ เลอช กจากเมนูส เปปน็ ตน้ช ****
3. คลกิล ที่ทร Save เมอ่ีรท จบการทาก งาน – จะปรากฎหน้าช ต่ชางมาให้บช ขนททึก Macro
4. ที่ทรหน้ชาตช่าง Save new macro - บนข ทึทกมาโคร

4.1 ทชีรท่ อช่ ง Name - ตงข้ั ชอท่ีร Macro
4.2 ทชีทร่ ่ชอง Shortcut กกาหนดคีรยล์ล ดข ให้กช บข การเรรียกใชช้ Macro เชน่ช <Ctrl><Alt><Shift><1> ถึงท <9>
4.3 คลกิล ปปุมช่ Save

16 เซอรวร์ สวิ Spreadsheet

1.1.ข.) การเรทยกใช้ช Macro
หลขงจากบนข ทกึท Macro แล้วช เราสามารถเรยีร กใชช้ Macro ทีบรท่ นข ทกทึ ไวไ้ช ด้ชทที่ร
เมนูด Tools → Macros → (ชทชี่อ Macro)

1.1.ค.) ดูดโค้ชดทที่ Macro สรชา้ ง
ทีทหร่ น้ชาแรก Google Sheet ไปท่รทีเมนูด Tools → Script Editor ตามภาพ

จะปรากฎหนช้าโปรเจกค็ Google Apps Script แสดงโคดช้ ต่าช งๆที่ถรท ดูกสรช้างขทึน้ขั ตามภาพ

โดย วสสันต์ต คคณุ ดิดลกเศวต ([email protected]) 17

1.2. Macro แบบ Absolute และ Relative

( หากยงร ไมต่เขช้าใจเรอ่ทีช งโคชด้ ใหชข้ า้ช มไปอา่ต นบทท่ที 2 กอ่ต น )
1.2.ก.) Macro จดวั รดปู แบบเซลลบ์ร นวั ททึกแบบ Absolute และ Relative
2 โค้ชดต่ชอไปนขัีร้ ขั้ขนตอนการบขนทึทก Macro เหมรอนกขน แต่ชตช่างกขนทรีท่เลรอก Absolute และ Relative จทึงได้ช
โคดช้ และผลการรขนตาช่ งกขน
โคชด้ ต่ชอไปนัี้รข ไดช้จากการบขนทึทก Macro แบบ Absolute Reference - เมี่ทรอรขน Macro จะจขดรดูปแบบเซลลล์
A1 เทชา่ นข้ัน

// เมอ่ชีท รนวั Macro จะจัดว รดูปแบบเซลลร์ A1 เท่าท น้ัขวน
function Pattaya_Blue() {

var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A1').activate();
spreadsheet.getActiveRangeList().setFontWeight('bold')

.setFontColor('#0000ff')
.setFontFamily('Pattaya');
}

โค้ดช ตช่อไปน้ัขีร ไดจช้ ากการบขนททึก Macro แบบ Relative Reference - เมที่รอรขน Macro จะจดข รูดปแบบเซลล์ลทรท่ี
เลรอก

// เมอทชี่ รวนั Macro จะจวัดรูปด แบบเซลล์รทเท่ี ลอช ก
function Pattaya_RED_18() {

var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getActiveRangeList().setFontColor('#ff0000')

.setFontSize(18)
.setFontStyle('italic')
}

18 เซอรรว์ สิว Spreadsheet

1.2.ข.) Macro บนัว ทกึท Alternating Colors

บขนททึก การจดข รดปู แบบตารางขอ้ช มดูลดวช้ ย Alternating Colors โดยบขนทึทกแบบ Relative Reference

// การบัวนทึทก เราเลอช กอาณาเขตของเซลล์รกอท่ น แล้ชวจงทึ ใสท่ Alternating Color
// *** แบบ Relative Reference ***
function TableAlterColor() {

var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getCurrentCell().offset(0, 0, 14, 7).activate() ; // กาก หนดขอบเขตเซลล์รชวัดเจน
spreadsheet.getActiveRange().applyRowBanding(SpreadsheetApp.BandingTheme.LIGHT_GREY) ;
var banding = spreadsheet.getActiveRange().getBandings()[0];
banding.setHeaderRowColor('#8bc34a')

.setFirstRowColor('#ffffff')
.setSecondRowColor('#eef7e3')
.setFooterRowColor(null) ;
}

Macro ขา้ช งตน้ช เวลารนข ผลจาก Alternating Colors จะทกากขบตารางข้ชอมูดลขนาด 14x7 เสมอ สขงเกตชโุ ค้ชด
ที่ทบร รรทดข spreadsheet.getCurrentCell().offset(0, 0, 14, 7).activate(); กคก็ อร 14 แถว 7 คอลมข น์ล ฉะน้ขัน จงึท
ไมช่สามารถทาก กขบเรช้นจตล์ ามขนาดทีรทเ่ ราเลรอกได้ช

มาลองดดกู ารบนข ทกทึ แบบ Absolute Reference กนข ดดูบาช้ ง

// บัวนทกทึ การจวัดรดูปแบบตารางขอ้ช มลูด โดยใช้ช Alternating Color
// *** แบบ Absolute Reference ***
function TableAlterColor2ABS() {

var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A1:G14').activate();
spreadsheet.getRange('A1:G14').applyRowBanding(SpreadsheetApp.BandingTheme.LIGHT_GREY);
var banding = spreadsheet.getRange('A1:G14').getBandings()[0];
banding.setHeaderRowColor('#e91d63')

.setFirstRowColor('#ffffff')
.setSecondRowColor('#fddce8')
.setFooterRowColor(null);
}

Macro ขชา้ งตนช้ เวลารนข ผลจาก Alternating Color จะใสชใ่ หกช้ ขบเรช้นจล์ A1:G14 เสมอ ใช้งช านไม่ตไดอ้ช ทก
เหมชอนกนร ตอช้ งเข้าช ไปแก้ชไขโคช้ดเอง

โดย วสนัส ตต์ คุณค ดิดลกเศวต ([email protected]) 19

การแกไ้ช ขโคช้ด
ไปทที่เร มนดู Tools → Script Editor จากนัขน้ แกช้โคดช้ เป็ปนดขงน้ขัรี
โคดช้ ใส่ช Alternating Colors เขรยี นสั้นข ๆตามดช้านลาช่ ง แคน่ช ีรก้ขั กใ็ ชไ้ช ด้ช

function TableAlterColor2ABS() { // ลดบรรทัสดโคด้ค แต่ตไดค้ผลเหมือม นเดิดม
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A1:G14').activate();
spreadsheet.getRange('A1:G14').applyRowBanding(SpreadsheetApp.BandingTheme.ORANGE);

}

อยาช่ งไรกด็ก รี โคดช้ ข้ชางบน ใชไ้ช ดเช้ ฉพาะกขบเซลลลท์ กีทร่ กาหนดแบบตายตวข เทาช่ น้นขั กก็คอร A1:G14 เท่าช นขัน้
ฉะน้ขันต้ชองแก้ช ดงข ตช่อไปนร้ัีข

// แบบทท่ี 1
// ใสท่ Alternating Color กัวบเรชน้ จร์ – เลชอกเซลลเ์ร ดทยวในตารางขอ้ช มดูล ใสใ่ท หก้ช บัว ททกุ เซลลทร์ ทต่ี ดวิ กนวั
function TableAlterColor2ABS-2() {

var spreadsheet = SpreadsheetApp.getActive() ;
spreadsheet.getDataRange().applyRowBanding(SpreadsheetApp.BandingTheme.ORANGE) ;
}
// แบบทท่ี 2
// ใสท่ Alternating Color เฉพาะเซลลร์ทีท่เลอช ก ***
function TableAlterColor2ABS-3() {
var spreadsheet = SpreadsheetApp.getActive() ;
spreadsheet.getActiveRange().applyRowBanding(SpreadsheetApp.BandingTheme.ORANGE) ;
}

20 เซอรว์ร ิวส Spreadsheet

บททที่ 2
เรยท กใช้เช ซอร์วร สิว
Spreadsheet

2.1. เรรยี กใชช้เซอรวร์ สวิ Spreadsheet

Spreadsheet Service
https://developers.google.com/apps-script/reference/spreadsheet

Extending Google Sheets
https://developers.google.com/apps-script/guides/sheets

เซอรวร์ ิสว Spreadsheet ใชสช้ รชา้ ง เขชา้ ถงึท ไฟล์ล และแกช้ไขขอ้ช มลดู ตาช่ งๆในไฟลล์ Google Sheets
คลาส SpreadsheetApp
การเรีรยกใช้ชงานเซอรล์วลิส Spreadsheet เร่ลีทิมต้ชนจากคลาส SpreadsheetApp จากนข้ันจึทงจขบคลาสยช่อยต่ชอ
ไปเรรทอ่ี ยๆ จนกว่ชาจะถึทงคลาสทเี่รท ราตช้องการจะควบคชุม
ตวร อย่ตาง - โคชด้ ต่อช ไปนร้ขีั สร้าช งไฟล์ล Google Sheets ขึนัขท้ มา จากน้ขันจขบ Url และ Id ของไฟลอ์ล อกมา Logs
ดดู

// สรค้างไฟล์ต Google Sheets ชชื่อม Finances ไวค้ทช่ืท Google Drive
var ssNew = SpreadsheetApp.create("Finances") ;

Logger.log(ssNew.getUrl()) ;
// พมิด พต์ : URL ของไฟลต์ - ผลลพสั ธต์เชนต่
// https://docs.google.com/spreadsheets/d/1TjYroQflJs2QNfz9wqhwnSFZ4rHChK9y8Toh22b1_D0

Logger.log(ssNew.getId()) ;
// พมดิ พต์ ID ของไฟลต์ - ผลลสัพธ์ตเช่นต
// 1TjYroQflJs2QNfz9wqhwnSFZ4rHChK9y8Toh22b1_D0

2.2. จบับไฟล์ทร แีท่ร อ็อคทีรฟ

2.2.ก.) getActiveSpreadsheet()

คลาส Spreadsheet
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet

getActiveSpreadsheet() - เมถอดในคลาส SpreadsheetApp

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#getactivespreadsheet

getActiveSpreadsheet() ใชจช้ ขบไฟล์ล Google Sheets โดยจะครนค่าช กลขบมาเปป็นคลาส Spreadsheet
getActiveSpreadsheet() ใช้ชไดกช้ ขบโปรเจกค็ Google Apps Scritpt ทรเที่ ขยรี นฝปงั อยชดูใ่ นไฟลล์ Google Sheets
หากเปป็น Google Apps Script แบบ Stand alone จะคนร คา่ช เปป็น null
ตวข อยาช่ งการใชชง้ าน

// พมดิ พ์ต URL ของไฟล์ต Google Sheets ทชโทื่ ปรเจจ็ค Google Script ฝัฝงอยตย่
//
Logger.log(SpreadsheetApp.getActiveSpreadsheet().getUrl()) ;

22 เซอรวร์ ิวส Spreadsheet

2.2.ข.) getUrl(), getId() และ getName()

getid() - เมถอดในคลาส Spreadsheet
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getid

ใชจช้ บข Id ของไฟล์ล Google Apps โดยจะครนคชา่ กลบข มาเปป็น String(ขอ้ช ความ)

getUrl() - เมถอดในคลาส Spreadsheet
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#geturl

ใชชจ้ ขบ Url ของไฟลล์ Google Apps โดยจะครนคา่ช กลบข มาเปป็น String(ข้ชอความ)

getName() - เมถอดในคลาส Spreadsheet
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getname

ใช้จช ขบ Url ชอรี่ท ไฟล์ล Google Apps โดยจะคนร ค่ชากลขบมาเปน็ป String(ขอช้ ความ)

Url และ Id ของไฟลร์

Url ของไฟลล์ Google Sheets ครอ ข้ชอความในช่อช งทร่ทีเราพิลมพ์ชล ที่อร เวกบ็ ลงไป ตวข อยา่ช งตามภาพ
Id ครอสชว่ นขชอ้ ความในบล็กอคดขงต่อช ไปนรขั้ี https://docs.google.com/spreadsheets/d/ Id /edit

2.2.ค.) getName()

getName()
https://developers.google.com/apps-script/reference/spreadsheet/sheet#getname
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getname

getName() เปนป็ เมถอดในหลายคลาส เชน่ช คลาส Spreadsheet, คลาส Sheet เปป็นตนช้ ใชจช้ บข ชอทร่ี ของ
วตข ถุช เชชน่ ช่ีรทอไฟลล์ , ชที่อร ชีท้ัขร เปป็นตชน้

var ss = SpreadsheetApp.getActive() ; // จบัส ชม่อืช ชชทที้
var name = ss.getName() ;
// พมดิ พ์ต : Object
Logger.log(typeof ss) ; // พมิด พต์ : String
Logger.log(typeof name) ; // พมิด พ์ต : (ชอมืช่ Spreadsheet)
Logger.log(name) ;

โดย วสันส ต์ต คคุณดลดิ กเศวต ([email protected]) 23

2.3. flush()

flush() - เมถอดในคลาส SpreadsheetApp
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#flush

โคด้ช บางอยช่าง ทเรีท่ ราตชอ้ งการใหชป้ รากฎผลใน Google Sheets ขณะรนข แตช่วาช่ พอรขนโคด้ช จนจบแลช้ว กลขบ
ไมช่ปรากฎผลให้ชเห็กนขณะรนข แตช่เห็กนผลตอนจบเลย

flush() ใชสช้ งที่ข ให้คช วามเปลทยรี่ นแปลงขณะรขนโคดช้ ปรากฎใน Google Sheets
flush() มีขร อ้ช เสีรย ทร่ทีท กาให้กช ารประมวลผลท้ขังหมดชา้ช ลง แตชก่ ็กมขรี ้อช ดทีร ที่ร เราสามารถเหกน็ ความเปลย่ทีร นแปลงทีร่ท
Google Sheets ทาก ใหชส้ ขมผขสได้วช ่าช โค้ชดกาก ลงข ทาก งานอยดู่ช
ผูเดช้ ขรียนมกข ใชช้ flush() กขบอะไรที่รตท ชอ้ งรนข เพยรี งครั้งข เดยีร ว เชชน่ การรขน Setup เพรีอท่ ตดลิ ตงั้ข ระบบงาน เป็ปนตช้น
ตขวอยช่าง - โคช้ดตช่อไปนีัรข้ถ้ชาไม่ชมีรบรรทขด SpreadsheetApp.flush() จะไม่ชเห็กนความเปลรีท่ยนแปลงระหว่ชาง
รขน จะเหกน็ ผลสุดช ทา้ช ยเลย

var sheet = SpreadsheetApp.getActiveSheet() ;
for (var i = 0 ; i < 20; i++) {

if ((i % 2) == 0) {
sheet.getRange('A1').setBackground('green') ;
sheet.getRange('B1').setBackground('red') ;

} else {
sheet.getRange('A1').setBackground('red') ;
sheet.getRange('B1').setBackground('green') ;

}
SpreadsheetApp.flush() ;

ผล – เห็กนสีรพขรัน้ หลขงของเซลล์ล A1 และ B1 สลขบสีกร ขน

24 เซอร์วร ิสว Spreadsheet

บทท่ที 3
ไฟล์ร

3.1. การเปดปิ ไฟล์ร
3.1.ก.) openById() และ openByUrl()

openById() - เมถอดในคลาส SpreadsheetApp

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#openbyidid

openByUrl() - เมถอดในคลาส SpreadsheetApp
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#openbyurlurl

openById() และ openByUrl() ใชชเ้ ปดฟิ ไฟลลโ์ ดยระบชุ Id หรรอ Url ของไฟลต์ล ามลาก ดขบ

ตวร อยาต่ ง โค้ชดตชอ่ ไปน้ัขรี เปดิฟ ไฟล์ล Google Sheets ตาม URL ของไฟลล์ที่รทร ะบุช จากนั้นข Logs ชที่อร ไฟลอ์ล อกมาดดู

var ss =
SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/abc1234567/edit') ;
Logger.log(ss.getName()) ;

โคด้ช ถดข ไป ใหผช้ ลลพข ธล์ เช่นช เดีรยวกบข โคดช้ กอ่ช นหนาช้

var ss = SpreadsheetApp.openById("abc1234567") ;
Logger.log(ss.getName()) ;

3.1.ข.) open()

คลาส File
https://developers.google.com/apps-script/reference/drive/file.html

ไฟลใ์ล น Google Drive ซึ่งที สามารถเขช้าถทงึ และถดูกสรชา้ งไดชโ้ ดยใชเ้ช ซอรว์ล สลิ Drive

open(file)
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#openfile

เปดิฟ ไฟลล์ Google Sheets ท่รทเี ปป็นวตข ถไุช ฟล์ล โดยพารามลิเตอร์ล file เปปน็ วตข ถุไช ฟล์ล

26 เซอรร์ววิส Spreadsheet

ตวข อย่าช ง

// จัสบไฟลทต์ ช่ทถื ยกมารค์ต ดาวใน Google Drive และเป็นป ไฟลต์ Google Sheets
// จากนนี้สชั เปปิดไฟล์ต Spreadsheet และ Logs ชอมืช่ ชีทชท้ แรกของไฟล์อต อกมาดย
var files = DriveApp.searchFiles(

'starred = true and mimeType = "' + MimeType.GOOGLE_SHEETS + '"') ;
while (files.hasNext()) {

var spreadsheet = SpreadsheetApp.open(files.next()) ;
var sheet = spreadsheet.getSheets()[0] ;
Logger.log(sheet.getName()) ;
}

3.2. การสรชา้ งไฟลร์

create(name) – เมถอดในคลาส SpreadsheeetApp

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#createname

create(name, rows, columns)

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#createname,-rows,-columns

create() ใชชส้ ร้าช งไฟล์ล Spreadsheet

ตวข อยา่ช ง – เมอ่ทีร รนข โคดช้ จะสรา้ช งไฟลล์ Google Sheets ไวช้ทรที่ My Drive (ทรีท่ Root folder)

var ssNew = SpreadsheetApp.create("Finances") ;
Logger.log(ssNew.getUrl()) ; // Url ของไฟลต์

var ssNew2 = SpreadsheetApp.create("Finances2",50,5) ;
Logger.log(ssNew2.getUrl()) ; // Url ของไฟลต์

เมอี่รท สร้าช งไฟลแ์ล ลวช้ จากนขั้น สามารถสรชา้ งช้ทรขีั ต่อช ได้ช หากตช้องการสรา้ช งไฟลไ์ล วช้ยงข โฟลเดอรแ์ล บบเจาะจง ตอช้ ง
ใชชเ้ ซอร์ลวสิล Drive รวช่ มดว้ช ย

3.3. หนา้ช ตาต่ งแบบตตา่ งๆ

3.3.ก.) toast()

toast(msg, title, timeoutSeconds) – เมถอดในคลาส Spreadsheeet

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#toastmsg,-title,-timeoutseconds

แสดงหน้ชาตาช่ ง Popup ท่ีมทร มชุ ขวาลช่าง โดยกกาหนดเวลาการเปฟดิ ไว้ชได้ช

พารามิลเตอร์ล

Name Type Description
msg String
title String ขอค้ ความทจื่ชท ะแสดง

timeoutSeconds Number ไตเตีดิลช้ ของกรอบ Popup

เวลาทืจ่ทช ะเปดปิ ทิชดงี้ ไว้ค หนตว่ ยเป็ปนวนดิ าทท
ถาค้ เวค้นไวค้ จะหมายถงถึ 5 วดินาทท
ถค้าเป็นป คตา่ ลบ จะเปดปิ ค้าค งไวคจ้ นกว่าต เราจะปดปิ เอง

โดย วสนัส ตต์ คณุค ดิลด กเศวต ([email protected]) 27

ตวข อยาช่ ง

// แสดง วนดิ าทท
SpreadsheetApp.getActiveSpreadsheet().toast('Task started', 'Status' , 3) ;

ผลลพข ธล์ - ปรากฎหนช้าตาช่ ง Popup ทีมร่ท ชมุ ขวาลาช่ งของ Spreadsheet ตามภาพ

3.3.ข.) show()

show(userInterface) – เมถอดในคลาส Spreadsheeet

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#showuserinterface

show() แสดงหนช้าตา่ช ง ท่ทเรี ราสามารถสราช้ งองคป์ล ระกอบเองได้ช ใชสช้ ร้ชางหนา้ช ตชา่ งรขบคช่าจากยสดู เซอร์ไล ด้ช (ถ้ชา
รขบหลายค่ชาสร้ชาง Sidebar ดกีร วาช่ ) พารามิลเตอรล์ userInterface กค็ก อร วขตถชุ HtmlOutput (โคด้ช Html)

ตวร อย่ตาง – โคดช้ ต่อช ไปนร้ใัีข ชชเ้ ซอรว์ล ิลส HtmlService สรา้ช งวตข ถุช HtmlOutput (โคด้ช HTML) สกาหรขบใชช้เปน็ป
เนั้ขอร หาใหกช้ บข เมถอด show()

var htmlApp = HtmlService
.createHtmlOutput('<p>A change of speed, a change of style...</p>')
.setTitle('My HtmlService Application')
.setWidth(250)
.setHeight(300) ;

SpreadsheetApp.getActiveSpreadsheet().show(htmlApp) ;

ผล

28 เซอรร์ววสิ Spreadsheet

บททีท่ 4
ชชทที้

4.1. จบับชีร้ทช ต่ตอจากไฟลร์

เมี่ทรอจขบไปทีร่ท Spreadsheet หรรอ ไฟลล์ Google Sheets แลช้ว เชน่ช
SpreadsheetApp.getActiveSpreadsheet() หรอร SpreadsheetApp.openById(id) เปนป็ ตน้ช จากนขัน้ เรา
สามารถจขบต่อช ไปยขงชทร้ีัข ตช่างๆในไฟลต์ล ่ชอได้ช โดยใชชห้ ลายเมถอด

4.2. getActiveSheet()

getActiveSheet() - เมถอดในคลาส Spreadsheet
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getactivesheet

ใชจช้ บข ชท้ขีัร ทที่เร ปิดฟ อยู่ชด โดยครนคช่ากลบข มาเปป็นวตข ถุช Sheet
ตวข อยาช่ ง

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet() ;

4.3. getSheets()

getSheet() - เมถอดในคลาส Spreadsheet
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getsheets

ใชจ้ช ขบชรีขัท้ ทขั้งหมดใน Spreadsheet โดยคนร ค่าช กลขบมาเปน็ป คลาส Sheet[] หรรอ หลายชัรี้ทข ที่เรท กกบ็ อยดใ่ชู นอาเรยล์
เชช่น [Sheet, Sheet, Sheet, … ]

ตวข อยา่ช ง

var ss = SpreadsheetApp.getActiveSpreadsheet() ;

var sheets = ss.getSheets ;

Logger.log(sheets.length) ; // นบัส จจานวนชที้ทช ทงชัส้ี หมด

sheets.forEach(function(sheet){ // วนพดมิ พช์ต ือ่ชม ช้ททชี ที้สชงั หมด
Logger.log(sheet.getName()) ;

}) ;

หมายเหตคุ : โคดช้ ตชอ่ ไปนขีรั้ จขบชขทั้รี ในลาก ดบข ทร่ีท 1 เพยรี งชท้ขีัร เดีรยว

getSheets[](0)
Logger.log(getSheets[](0).getName())

4.4. getSheetByName()

getSheetByName() - เมถอดในคลาส Spreadsheet

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getsheetbynamename

ใชจ้ช บข ชี้ทัขร ตามชีอท่ร ชีรข้ัท โดยครนคาช่ กลขบมาเปน็ป คลาส Sheet

30 เซอร์รวสิว Spreadsheet

ตวข อยาช่ ง

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1") ;

if (sheet != null) { // ถ้าค sheet ไมใ่ต ชต่ null หรือม ไมม่ต ชท ้ีชทท ใดๆ
Logger.log(sheet.getIndex()) ; // พมดิ พ์ต : 1 (ลาจ ดบสั ของชทท้ีช )

}

4.5. insertSheet()

insertSheet() - เมถอดในคลาส Spreadsheet
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#insertsheet

insertSheet(sheetIndex) - เมถอดในคลาส Spreadsheet

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#insertsheetsheetindex

insertSheet(sheetIndex, options) - เมถอดในคลาส Spreadsheet

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#insertsheetsheetindex,-options

insertSheet(options) - เมถอดในคลาส Spreadsheet

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#insertsheetoptions

insertSheet(sheetName) - เมถอดในคลาส Spreadsheet

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#insertsheetsheetname

insertSheet(sheetName, sheetIndex) - เมถอดในคลาส Spreadsheet

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#insertsheetsheetname,-sheetindex

insertSheet(sheetName, sheetIndex, options) - เมถอดในคลาส Spreadsheet

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#insertsheetsheetname,-sheetindex,-options

insertSheet(sheetName, options) - เมถอดในคลาส Spreadsheet

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#insertsheetsheetname,-options

insertSheetWithDataSourceTable(spec) - เมถอดในคลาส Spreadsheet

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#insertsheetwithdatasourcetablespec

insertSheet ใชชแ้ ทรกชีข้ทรั ใหม่ชให้ชกขบ Spreadsheet

พารามลิเตอร์ล

Name Type Description
sheetName String ชอ่ชืม ชีชท้ท
sheetIndex Integer ลาจ ดบสั ของชท้ีชทใหมท่ต ่ชจทื ะแทรก (เรืชดม่ิ ททช่ื 0)
option Object ระบคุเปนป็ ออ๊อปเจก็จ ของไฟลตท์ จ่ืชท ะใช้เค ป็ปนเทมเพลต

ตวข อยชา่ ง

var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var templateSheet = ss.getSheetByName('Sales') ;

ss.insertSheet('My New Sheet', 1, {template: templateSheet}) ;

โดย วสัสนต์ต คณุค ดดิลกเศวต ([email protected]) 31

ตวข อยา่ช ง – โค้ดช ต่ชอไปน้ขัรี ตรวจสอบช่ีรทอชีัรข้ทก่ชอนว่าช มีรหรอร ไม่ช ถา้ช มีรก็ลก บก่ชอน ถา้ช ไมช่มกีร ็กแทรกชัีรข้ทใหมช่ จากนัข้นจะ
ทาก อะไรในชีรัท้ข ใหมกช่ วก็ ่ชากขนไป

var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var newSheet ;
var isSheet = ss.getSheetByName('ชขั้ททใหม'ท่ ) ;
// ถคา้ ไมต่มทชทีชท้ ชช่มือ 'ชช้ทีท ใหมต่'
if (isSheet == null)
{

newSheet = ss.insertSheet('ชททขั้ ใหมท่') ;
}
// ถคา้ มทชททชี้ ชมื่ชอ 'ชีชทท้ ใหมต่'
else
{

ss.deleteSheet(isSheet) ;
newSheet = ss.insertSheet('ชทขั้ท ใหม่ท') ;
// ไมตต่ อค้ งลบชท้ทชี ออก แคลต่ คา้ งข้อค มลย และรปย แบบกไจ็ ด้ค แลว้ค จับส ใสต่ต สวั แปรใหมต่ ดงัส นีทช้
// newSheet = isSheet.clear() ;
}
// กรอกข้คอความลงในชช้ีทท ใหมเต่ ซลลต์ A1
newSheet.getRange('A1').setValue('Something') ;

4.6. deleteSheet()

deleteSheet(sheet) - เมถอดในคลาส Spreadsheet
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#deletesheetsheet

ใชช้ลบชทรีขั้ ทรรีท่ ะบุช โดยพารามลเิ ตอร์กล ็คก รอ วตข ถชุ Sheet ท่ีตทร ช้องการลบ
ตวข อยา่ช ง

var ss = SpreadsheetApp.getActive() ;
var sheet3 = ss.getSheetByName('Sheet3') ;
if ( sheet3 != null)
{

ss.deleteSheet(sheet3) ;
}

32 เซอร์รวสิว Spreadsheet

4.7. activate()

activate() - เมถอดในคลาส Sheet
https://developers.google.com/apps-script/reference/spreadsheet/sheet#activate

ใชก้ช กาหนดชขทร้ัี ใหเช้ ป็นป ตวข แอ็กคทฟรี คลา้ช ยกขบการคลกิล เมช้าส์ลเลรอกชท้ัขรี ดขงกลาช่ ว
ตวข อย่ชาง

var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var first = ss.getSheetByName("first") ;
first.activate() ; // เลมอื กชทีท้ช ชื่อชม first

4.8. getParent()

getParent() - เมถอดในคลาส Sheet
https://developers.google.com/apps-script/reference/spreadsheet/sheet#getparent

ครนคช่าเปป็นวขตถุช Spreadsheeet ท่ีทรชขรีั้ทนข้ันอยช่ดู getParent() เป็ปนเมถอดในหลายคลาส และหลายเซอรล์วลิส
ใชจช้ บข วตข ถตชุ วข แมช่

ตวข อยช่าง

var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;

// parent กค็จ อืม Spreadsheet ทชช่ืท ชที้ทน้ชสันี อยตย่
var parent = sheet.getParent() ;

4.9. การลช้างชี้ทชร

4.9.ก.) clear()

clear(options) - เมถอดในคลาส Sheet
https://developers.google.com/apps-script/reference/spreadsheet/sheet#clearoptions

ใชลช้ า้ช งชั้ทรีข โดย สามารถกกาหนดไดช้ วาช่ จะล้าช งเนร้ัขอหาหรรอรูดปแบบ ซ่ีทึงกาก หนดไดช้ทพทีร่ ารามเตอรล์ options โดย
ตอ้ช งกกาหนดแบบวตข ถชุ หรอร คาช่ ใน { } (ดตดู วข อยาช่ ง เพอร่ีท ทกาความเข้าช ใจวธลิ กรี ารกาก หนดค่ชาของ options )

พารามิลเตอร์ล

Name Type Description

options Object ออ๊อปเจ็จค Javascript ทื่ปชท ระกอบไปด้ควยพารามิดเตอรต์ข้ีชนสั สยง
(ดยตาราง พารามเดิ ตอรข์ต ีนั้สช สยง)

พารามเลิ ตอรขล์ นัข้ สงูด

Name Type Description
contentsOnly Boolean จะลค้างเนีช้ืมอหาหรือม ไม่ต
formatOnly Boolean จะลาค้ งรปย แบบหรอืม ไม่ต

โดย วสนัส ต์ต คุคณดลิด กเศวต ([email protected]) 33

ตวข อยา่ช ง

var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
sheet.clear({ formatOnly: true, contentsOnly: true }) ;

4.9.ข.) clearContents() และ clearFormats()

Clear spreadsheet content while preserving any formatting

https://developers.google.com/google-ads/scripts/docs/examples/spreadsheetapp#clear-spreadsheet-content-while-preserving-any-formatting

clearContents() - เมถอดในคลาส Sheet
https://developers.google.com/apps-script/reference/spreadsheet/sheet#clearcontents

ใชช้ลบเน้ัขอร หาทขั้งหมดในชัร้ขีท แตช่ไม่ลช บรดูปแบบของเซลลล์ต่ชางๆในชี้ทรัข โดยจะคนร คา่ช กลขบมาเปปน็ คลาส Sheet

Clear spreadsheet formatting while preserving any data

https://developers.google.com/google-ads/scripts/docs/examples/spreadsheetapp#clear-spreadsheet-formatting-while-preserving-any-data

clearFormats() - เมถอดในคลาส Sheet
https://developers.google.com/apps-script/reference/spreadsheet/sheet#clearformats

ใชล้ช า้ช งรดูปแบบทงขั้ หมดในชรขั้ที แต่ไช ม่ชลบเนอัขร้ หาตาช่ งๆในเซลลล์ โดยจะคนร ค่ชากลบข มาเปป็นคลาส Sheet
ตวข อยาช่ ง

var ssID = 'sheet_ID';
var s1Name = 'Sheet1' ;
var s2Name = 'Sheet2' ;
var ss = SpreadsheetApp.openById(ssID) ;
var sheet1 = ss.getSheetByName(s1Name) ;
var sheet2 = ss.getSheetByName(s2Name) ;
sheet1.clearContents() ;
sheet2.clearFormats() ;

เมีทร่อรนข โคดช้ เน้รอัข หาในชีรท้ัข ชีทรอ่ Sheet1 จะถกูด ลบออกไป แตร่ช ูดปแบบของเซลลล์ตชา่ งๆ จะยงข คงอยด่ชู สวช่ น
Shee2 เน้ขอรั หายขงคงอยด่ชู แตร่ช ูดปแบบของเซลลถล์ กดู ลช้างออกทงขั้ ชทีัขร้

34 เซอรร์วิวส Spreadsheet

บททที่ 5
การจัดบ การแถว

หรรือคอลบมั น์ร

5.1. การแทรกแถว

insertRowAfter(afterPosition) – เมถอดในคลาส Sheet

https://developers.google.com/apps-script/reference/spreadsheet/sheet#insertrowafterafterposition

ใช้ชแทรก 1 แถว หลขงตาก แหนง่ช แถวทรี่รท ะบชใุ นพารามเลิ ตอรล์ afterPosition

ตวข อยา่ช ง

var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;

// แทรกแถวไว้ค ดคา้ นล่าต งของแถวททืช่ 1
sheet.insertRowAfter(1) ;

insertRowBefore(beforePosition) – เมถอดในคลาส Sheet

https://developers.google.com/apps-script/reference/spreadsheet/sheet#insertrowbeforebeforeposition

ใชชแ้ ทรก 1 แถว กอ่ช นตกาแหนงช่ แถวทรรที่ ะบใชุ นพารามเิล ตอร์ล beforePosition

insertRows(rowIndex) – เมถอดในคลาส Sheet

https://developers.google.com/apps-script/reference/spreadsheet/sheet#insertrowsrowindex

ใชแ้ช ทรกแถวว่ชาง 1 แถว ณ ตาก แหน่ชงทีรท่ร ะบชุ (แถวดาช้ นล่ชางถดูกเลีรอท่ นลง)

insertRows(rowIndex, numRows) – เมถอดในคลาส Sheet

https://developers.google.com/apps-script/reference/spreadsheet/sheet#insertrowsrowindex,-numrows

ใชช้แทรกแถววาช่ ง 1 หรรอหลายแถว ณ ตกาแหนชง่ ทีร่ทร ะบชุ (แถวด้าช นลา่ช งถดูกเล่รีทอนลง)

Name Type Description
rowIndex Integer ตาจ แหนงต่ ของแถว ทจืชท่ ะแทรกแถว
numRows Integer จาจ นวนแถวทท่ืจช ะแทรก

insertRowsAfter(afterPosition, howMany) – เมถอดในคลาส Sheet

https://developers.google.com/apps-script/reference/spreadsheet/sheet#insertrowsafterafterposition,-howmany

แทรกแถว 1 หรอร หลายแถว หลขงจากตกาแหนชง่ ททรีร่ ะบุช

Name Type Description
afterPosition Integer The row after which the new rows should be added.
howMany Integer The number of rows to insert.

insertRowsBefore(beforePosition, howMany) – เมถอดในคลาส Sheet

https://developers.google.com/apps-script/reference/spreadsheet/sheet#insertrowsbeforebeforeposition,-howmany

แทรกแถว 1 หรรอหลายแถว กชอ่ นตาก แหน่ชงทีท่รระบชุ

Name Type Description
beforePosition Integer The row before which the new rows should be added.
howMany Integer The number of rows to insert.

36 เซอรรว์ วิส Spreadsheet

5.2. การลบแถว

deleteRow(rowPosition) – เมถอดในคลาส Sheet
https://developers.google.com/apps-script/reference/spreadsheet/sheet#deleterowrowposition

ใชล้ช บแถว ณ ตาก แหน่ชงทรีทร่ ะบชใุ นพารามเิล ตอร์ล rowPosition
ตวข อยาช่ ง

var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
// ลบแถวท่ืทช 1
sheet.deleteRow(1) ;
deleteRows(rowPosition, howMany) – เมถอดในคลาส Sheet

https://developers.google.com/apps-script/reference/spreadsheet/sheet#deleterowsrowposition,-howmany

ใชช้ลบแถว 1 หรรอหลายแถว ตามจาก นวนทรรีท่ ะบชุในพารามิลเตอรล์ howMany โดยเรลิท่ีมจากตกาแหน่ชงที่รทระบุชใน
พารามเลิ ตอร์ล rowPosition

var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
// ลบแถวท่ืทช 1 ยาวไป 2 แถว
sheet.deleteRows(1, 2) ;

โดย วสันส ตต์ คุณค ดดิลกเศวต ([email protected]) 37

38 เซอร์วร วิส Spreadsheet

บททีท่ 6
เรช้นจ์ร

6.1. จบับเรน้ช จ์ร

เมร่อที จขบไปทรทชี่ ขีทรั้ ท่ทรีตอช้ งการได้แช ล้วช หากตอ้ช งการจขบตช่อไปทีรท่ เรนช้ จพ์ หรอร เซลลต์พ ต่างๆ สามารถทาก ไดช้โดยใช้ช
หลาย เมถอดในคลาส Range

6.2. getRange()

คลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range

getRange() ใชจ้ช ขบเรช้นจล์ โดยจะครนคาช่ กลขบมาเปน็ป วตข ถชุ Range

6.2.ก.) getRange(row, column)

getRange(row, column) - เมถอดในคลาส Sheet
https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangerow,-column

ใชช้จบร เร้นช จ์พเพยท ง 1 เซลลพ์ โดยระบุชเรช้นจเล์ ปป็นตวข เลขตกาแหนช่งแถวและคอลมข นล์ เช่ชน getRange(2, 3) กคก็ อร
แถวท่ที 2 คอลมวั น์รทที่ 3 (เซลล์ร C2) เปป็นตช้น

ตวข อยาช่ ง

var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ; // จบสั ชี้ททช แรก

var range = sheet.getRange(1, 1) ; // จบัส เซลลต์ A1
var values = range.getValues() ; // จบัส คตา่ ในเซลล์ต A1 – แบบอาเรย์ต 2 มิตด ดิ
// var value = range.getValue() ; // จบสั ค่าต ในเซลลตเ์ ดยท วใชค้ getValue งาต่ ยกวาต่

Logger.log(values[0][0]) ; // พมดิ พต์ : (คา่ต ในเซลล์ต A1)

6.2.ข.) getRange(row, column, numRows)

getRange(row, column, numRows) - เมถอดในคลาส Sheet

https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangerow,-column,-numrows

ใช้จช บร เรน้ช จ์พ 1 คอลมร น์พ โดยระบชตุ ขวเลขตาก แหนงช่ เปป็น จดชุ เริม่ทีล แถว จดชุ เร่มิีทล คอลมข นล์ และจกานวนแถว

ตวข อยาช่ งการใชช้งาน

var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;

var range = sheet.getRange(1, 1, 3) ; // จสบั เรดิชื่มต้นค ท่ืชท A1 ยาวไป 3 แถว

var values = range.getValues() ; // จสับค่ตาในเรค้นจต์ - ไดม้ค าเปป็นอาเรย์ต 2 มดิตดิ

for (var row in values) { // วนลปย Log คาต่ ในเซลลต์ A1 ถถึง A3 - 3 คต่า
for (var col in values[row]) {
Logger.log(values[row][col]) ;
} // จบ for ใน

} // จบ for นอก

หมายเหตคุ : เมถอดตระกลูด วนลดปู ของอาเรย์ล เช่ชน forEach นลิยมใชเ้ช ข้ชาถึงท ขอช้ มลูด ในอาเรย์มล ากกวาช่ ลดูป for

40 เซอรร์ววสิ Spreadsheet

6.2.ค.) getRange(row, column, numRows, numColumns)

getRange(row, column, numRows, numColumns) - เมถอดในคลาส Sheet

https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangerow,-column,-numrows,-numcolumns

ใชจ้ช บข เรชน้ จแ์ล บบตารางขชอ้ มดูล โดยระบชุตวข เลขตาก แหนงช่ เปน็ป จุชดเรที่มลิ แถว จดชุ เร่มีทิล คอลมข น์ล จาก นวนแถว และ
จกานวนคอลมข นล์ ตามลาก ดขบ

ตวข อยชา่ ง

var ss = SpreadsheetApp.getActiveSpreadsheet() ;

var sheet = ss.getSheets()[0] ;

var range = sheet.getRange(1, 1, 3, 3) ; // จบสั เร่มิดืช ตนค้ ทืช่ท A1 ยาวไป 3 แถว 3 คอลมัส น์ต

var values = range.getValues() ; // จบัส คา่ต ในเร้คนจ์ต - ไดม้ค าเปน็ป อาเรยต์ 2 มติด ิด

for (var row in values) { // วนลยป Log คาต่ ในเซลลต์ A1 ถึถง C3 - ไดค้ 9 ค่าต
for (var col in values[row]) {
Logger.log(values[row][col]) ;
} // จบ for ใน

} // จบ for นอก

6.2.ง.) getRange(a1Notation)

getRange(a1Notation) - เมถอดในคลาส Sheet
https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangea1notation

ใชจ้ช บข เรน้ช จล์ โดยระบพุช ารามเลิ ตอรล์ a1Notation เป็ปนสขญลขกษณล์ A1 Notation เชน่ช A5 หรอร A5:B10
เปปน็ ตชน้ หรอร สขญลกข ษณล์ R1C1 เช่นช R[1]C[2]

ตวข อยาช่ ง

// จสับเรคน้ จ์ต A1:D4 ทอท่ืช ยบต่ย นชีชทท้ "Invoices"
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var range = ss.getRange("Invoices!A1:D4") ;

// จัสบเร้นค จ์ต A1 ในชี้ทชทท่ืชท 1
var sheet = ss.getSheets()[0] ;
var cell = sheet.getRange("A1") ;

6.3. getLastRow() และ getLastColumn()

How to Get The Last Row - Google Sheets Apps Scripts - Array Methods Part 10
https://youtu.be/zWcNzLbJpb0?list=PLv9Pf9aNgemvD9NFa86_udt-NWh37efmD

getLastRow() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#getlastrow

getLastColumn() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#getlastcolumn

getLastRow() และ getLastColumn() ใชช้จบข แถวสดชุ ทา้ช ย หรรอ คอลขมนล์สุชดทา้ช ยของเร้ชนจ์ลทีท่รเราจขบไว้ช ตาม
ลกาดขบ โดยจะคนร คชา่ กลขบมาเปป็น เลขจาน นวนเต็อม แถวทที่ หรอช คอลรมนทพ์ ีท่

โดย วสัสนตต์ คคุณดลิด กเศวต ([email protected]) 41

ตวข อยาช่ ง

var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var range = sheet.getRange("B3:D10") ;

var lr = range.getLastRow() ;
var lc = range.getLastColumn() ;

Logger.log(lr + " " + lc) ; // พมดิ พต์ : 10 4

6.4. getA1Notation()

getA1Notation() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#geta1notation

getA1Notation() ใชชจ้ บข ตกาแหนง่ช ของเร้นช ตล์ทรีท่เลอร กหรอร ระบุช แล้วช คนร คา่ช กลบข มาเปนป็ ตกาแหน่งช ของเรน้ช จใล์ นรูปด
แบบ A1 Notation เชช่น A2:G20 เป็นป ต้นช

var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;

var range = sheet.getRange(1, 1, 2, 5) ;

Logger.log(range.getA1Notation()) ; // พมดิ พ์ต : A1:E2

6.5. getCell()

getCell(row, column) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#getcellrow,-column

ใชจช้ ขบ 1 เรนช้ จท์ล รทร่ี ะบุช โดยจะครนคช่ากลบข มาเปป็นวตข ถุช Range ของ 1 เซลล์ล

ตวข อยาช่ ง

var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var range = sheet.getRange("B2:D4") ;

// จบัส เซลลต์ตาจ แหนงต่ 1,1 ในเรน้ค จต์ B2:D4 กจ็คอืม จสับไปททเ่ชื ซลลต์ B2
var cell = range.getCell(1, 1) ;
Logger.log(cell.getValue()) ;

หมายเหตคุ
getCell() ใชจ้ช บข เซลลใล์ นเร้นช จตล์ อช่ ไดด้ช ว้ช ย เชน่ช

sheet.getRange("A1:D1").getCell(1,1) ; // จบัส เรน้ค จต์ A1 เซลลเ์ต ดยท ว
sheet.getRange("A1:D1").getCell(1,2) ; // จสบั เร้นค จ์ต A2 เซลลต์เดยท ว

42 เซอรวร์ วสิ Spreadsheet

6.6. getDataRegion()

6.6.ก.) getDataRegion()

getDataRegion() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#getdataregion

getDataRegion() ใชช้จขบเรชน้ จท์ล ี่อรท ยดตู่ช ดิล กบข เซลลทล์ ีร่เท ราเลอร ก คลาช้ ยกบข เลรอกบางเซลลล์ไวช้ เชช่นเลอร ก B2 จากน้นขั
กด <Ctrl><A> อาณาเขตการเลอร กจะขยายออกไปครอบคลุมช เซลลทล์ ีมรท่ ีรข้ชอมูลด ทอรีท่ ยต่ชูด ดิล กขบ B2 ดวช้ ย

ตวข อยา่ช งขอช้ มดลู

ตวข อยช่างการใชง้ช าน

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0] ;

var Region_1 = sheet.getRange("B2").getDataRegion().getA1Notation() ;
var Region_2 = sheet.getRange("H8").getDataRegion().getA1Notation() ;

Logger.log(Region_1) ; // พมดิ พต์ : A1:D4
Logger.log(Region_2) ; // พมดิ พ์ต : F6:I9

6.6.ข.) getDataRegion(dimension)

getDataRegion(dimension)

https://developers.google.com/apps-script/reference/spreadsheet/range#getdataregiondimension

getDataRegion(dimension) ใชจช้ บข เรนช้ จล์ทอีร่ท ยช่ตดู ดิล กบข เซลลลท์ ่ทีรเราเลอร ก โดยสามารถเลรอกทลิศทางไดก้ช าร
ขยายเรช้นจ์ลไดช้ getDataRegion(dimension) คนร คา่ช กลบข มาเป็นป คลาส Range โดยพารามลเิ ตอรล์ dimension ก็คก รอ
Enum Direction(ใชไ้ช ม่ไท ด้ช) หรอร Enum Dimension

Enum Direction – การเรทยกใชค้งานเชน่ต SpreadsheetApp.Direction.DOWN เปนป็ ตน้ค
https://developers.google.com/apps-script/reference/spreadsheet/direction#UP

Property Type Description
UP Enum The direction of decreasing row indices.
DOWN Enum The direction of increasing row indices.
PREVIOUS Enum The direction of decreasing column indices.
NEXT Enum The direction of increasing column indices.

โดย วสสนั ตต์ คณคุ ดดิลกเศวต ([email protected]) 43

Enum Dimension – การเรทยกใชค้งานเช่ตน SpreadsheetApp.Dimension.COLUMNS เปนป็ ต้นค
https://developers.google.com/apps-script/reference/spreadsheet/dimension

Property Type Description
COLUMNS Enum The column (vertical) dimension.
ROWS Enum The row (horizontal) dimension.

ตวข อยาช่ ง

// แรกเรืิ่มชด กตอ่ นรนัส โคคด้ ช้ชทีท ไมมต่ ขท คอ้ มลย ใดๆ
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;

// กรอกขอ้ค มยลลงในเซลลต์ต ่ตางๆ 4 เซลล์ต
sheet.getRange("C2").setValue(100) ;
sheet.getRange("B3").setValue(100) ;
sheet.getRange("D3").setValue(100) ;
sheet.getRange("C4").setValue(100) ;

Logger.log( // Logs "C2:C4"
sheet.getRange("C3").getDataRegion(SpreadsheetApp.Dimension.ROWS).getA1Notation()

);
Logger.log( // Logs "B3:D3"

sheet.getRange("C3").getDataRegion(SpreadsheetApp.Dimension.COLUMNS).getA1Notation()
);

6.7. getDataRange()

getDataRange() - เมถอดในคลาส Sheet
https://developers.google.com/apps-script/reference/spreadsheet/sheet#getdatarange

ใชจช้ ขบข้ชอมูดลทีทมร่ ีรในชีัท้ขร ตัข้งแตชม่ มุช ซ้ชายบนที่รทมรีขช้อมลดู ไปจนถทึงมุมช ขวาลา่ช งทท่รีมขีร ้ชอมลดู ตวข สดุช ทช้าย
getDataRange ใหชผ้ ลเหมรอนกขบโคด้ช นัข้รี getRange(1,1,sheet.getLastRow(),sheet.getLastColumn())
ตวข อยา่ช ง
ตารางข้อช มดูลใน Google Sheet มดีร ขงตอ่ช ไปนรัี้ข

44 เซอรรว์ ิวส Spreadsheet

โค้ดช ตอ่ช ไปนีัขร้ Logs ข้ชอมดลู ท้ขงั หมดทรีมท่ ใีร นชทีร้ขั ออกมาดดู

var ss = SpreadsheetApp.getActive() ; // ไฟล์ปต ฝจั จุคบนสั
var sheet = ss.getActiveSheet() ; // ชทช้ที ทเ่ืชท ปดิป
var data = sheet.getDataRange() ; // เรน้ค จขต์ คอ้ มลย
var values = data.getValues() ; // ขอค้ มยลในช้ททชี ทสชีัง้ หมด

Logger.log(values) ; // ดผย ลทชื่ท Logs ------------------- > [ 01 ]

ผล

Logs

[ 01 ] [ [ Fruit, Cost, Quantity ],
[ Apple, 15, 200 ],
[ Bananas, 50.0, 520.0 ],
[ Mangoes, 20, 1025 ],
[ Durian, 150, 50 ],
[ Longan, 60, 450 ]]

อกีร ตขวอยช่าง ต่ชอเนร่ีทองจากตขวอยช่างก่ชอนหนช้า - ยาช้ ยขอ้ช มูดลออกมา ใหช้มีรแถววาช่ งและคอลขมน์ลว่ชางท่รีทดช้านซ้ชาย
และดาช้ นบน

Logs ขชอ้ มดูลในรูดปแบบ CSV ขน้ขั ดว้ช ย " , " (คอมมตา่ )

var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;

var range = sheet.getDataRange() ;
var values = range.getValues() ;

for (var i = 0; i < values.length; i++) {
var row = "" ;
for (var j = 0; j < values[i].length; j++) {
if (values[i][j]) {
row = row + values[i][j] ;
}
row = row + "," ;
}
Logger.log(row) ; // Log ขค้อมลย ในรปย แบบ CSV ขชัสีน้ ดดค้วย , (คอมมาต่ )

}

โดย วสันส ตต์ คคณุ ดลดิ กเศวต ([email protected]) 45

ผล

Logs
[01] ,,,,
[02] ,,,,
[03] ,Fruit,Cost,Quantity,
[04] ,Apple,15,200,
[05] ,Bananas,50,520,
[06] ,Mangoes,20,1025,
[07] ,Durian,150,50,
[08] ,Longan,60,450,

หมายเหตคุ :
เม่รีทอใช้ช getDataRange() จขบข้ชอมูดลในช้ขรัีทแล้ชว มขกจะใช้ชอาเรยล์เมถอด เชช่น shift(), splice() หรรอ slice()
ตดข ข้อช มูดลทรี่ทไมช่ต้ชองการออกไป เช่ชน ตดข หวข ตาราง จากนัขน้ จะเหลอร เฉพาะสว่ช นทรที่ตอ้ช งการ

6.8. getValue() และ getValues()

getValue() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#getvalue

ใชจช้ บข ค่ชาในเรชน้ จลท์ ม่ีทร ุมช ซ้าช ยบน(จบข มาคาช่ เดรียว) คา่ช ในเรน้ช จล์ทท่รจี บข สามารถเปน็ป ตวร เลข, บูลส ลนท , ข้อช ความ
เปป็นตน้ช หากเซลล์ลวชา่ งสีท่ิงล ทจที่ร บข มาไดชจ้ ะเปป็น ขชอ้ ความวาต่ งๆ

ตวข อยา่ช ง

var valInA1 = SpreadsheetApp.getActiveSheet().getRange(1, 1).getValue() ;

getValues() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#getvalues

ใชจช้ บข คาช่ ในเรช้นจท์ล ร่ีรท ะบุช คาช่ ที่ทคร รนกลบข มาเป็ปนอาเรยล์ 2 มตลิ ิล (แม้ชจะจขบไปทรีท่เซลลล์เดีรยวกก็ตาม) สามารถระบชุ
ตาก แหน่งช ภายในอาเรย์ลไดด้ช งข น้รขัี getValues()[i][j]

ตวข อยาช่ ง

// จบัส คตา่ ในเร้คนจต์ C2:G8
var values = SpreadsheetApp.getActiveSheet().getRange(2, 3, 6, 4).getValues();
Logger.log(values[0][0]) ; // ดคย ่ตาในอาเรยตต์ สัวแรกตวัส เดยท ว

46 เซอรร์วิสว Spreadsheet

6.9. getDisplayValue() และ getDisplayValues()

getDisplayValue() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#getdisplayvalue

ใช้ชจบข คช่าตามทแ่ีทร สดงใหช้เหก็นในเรน้ช จล์ โดยจขบทีทมร่ ุมช ซ้าช ยบน(จขบมาคชา่ เดียร ว) โดยจะคนร คาช่ กลขบมาเปป็น String

getDisplayValues() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#getdisplayvalues

ใชช้จบข คาช่ ตามท่ีทรแสดงให้ชเหก็นในเรช้นจ์ล โดยจะคนร ค่ชากลบข มาเปป็น String[][]-อาเรย2์ต มตดิ ทดิ ม่ทืช ทขอ้ค มลย เปนป็ String

ตวข อย่าช ง - ตารางข้ชอมูดลมีรดงข ตอช่ ไปนรัข้ี

โคช้ด

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1') ;

var values = sheet.getRange('C1:C2').getValues() ;

Logger.log(values) ; // พมิด พต์ : [[10.0], [10.5]]

var displayValues = sheet.getRange('C1:C2').getDisplayValues() ;

Logger.log(displayValues) ; // พดมิ พ์ต : [[฿10.00], [฿10.50]]

6.10. จบับ เรช้นจ์รจากชี่ทอช เรน้ช จร์ (Named ranges)

Retrieve a named range from a spreadsheet

https://developers.google.com/google-ads/scripts/docs/examples/spreadsheetapp#retrieve-a-named-range-from-a-spreadsheet

6.10.ก.) getRangeByName()

getRangeByName(name) – เมถอดในคลาส Spreadsheet

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getrangebynamename

ใชช้จขบเรช้นจลจ์ าก ชอที่ช เรนช้ จ์ร(Named Range) พารามิลเตอรล์ name เปนป็ ชีรทอ่ ของเร้ชนจ์ล
ชี่อทช เร้ชนจ์ร หรรอ Named Range เมอ่ีรท เรมลท่ีิ ตนช้ ใช้งช าน Google Sheets จะยงข ไมช่มีร แตเ่ช ราสามารถสราช้ ง Named
Range หรอร ตั้งร ชีท่ชอใหก้ช รบเรนช้ จ์พ ได้ทช ีทเ่ร มนดู Data → Named Ranges (ตวข อยา่ช งตามภาพถขดไป)

โดย วสสนั ตต์ คคณุ ดดิลกเศวต ([email protected]) 47

การตัข้งชรี่อท เรชน้ จ์ล ทกาให้ชเราสามารถเขา้ช ถึงท เร้นช จล์ได้งช าช่ ยจากชอี่รท ของเรช้นจล์ เชนช่ sum(NamedRange) เปป็นตช้น

โคด้ช ตอ่ช ไปน้ัขรี ดงึท ขช้อมดูลของเร้ชนจ์ล จากชทรอ่ี ของเร้ชนจ์ล(Named Range) ออกมา Log ดดู

var ssID = 'Your Google Sheets ID' ; // จบสั เรคน้ จต์ชม่ืชอ Test
var ss = SpreadsheetApp.openById(ssID) ;
// พมดิ พ์ต : 4.0
var range = ss.getRangeByName('Test') ; // พมิด พ์ต : 9.0
// พมิด พ์ต : B4:E12
if (range != null) { // พมดิ พ์ต : ชอีทช่ ชทท้ัข
Logger.log(range.getNumColumns()) ;
Logger.log(range.getNumRows()) ;
Logger.log(range.getA1Notation()) ;
Logger.log(range.getSheet().getName()) ;

} // Close – if

6.10.ข.) getNamedRanges()

getNamedRanges() - เมถอดในคลาส Spreadsheet

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getnamedranges

ใชจ้ช ขบ Named Ranges ในไฟลล์ Google Sheets โดยคนร คา่ช กลบข มาเปป็น NamedRanged[]-วัตว ถทุ

NamedRange ในอาเรยร์

getNamedRanges() - เมถอดในคลาส Sheet
https://developers.google.com/apps-script/reference/spreadsheet/sheet#getnamedranges

ใชช้จขบ Named Ranges ในชข้รัทใดๆ โดยครนคช่ากลขบมาเป็ปน NamedRanged[]-ววัตถุท NamedRange ในอา

เรยร์

48 เซอรวร์ ิสว Spreadsheet

ตวร อยา่ต งทที่ 1 – จขบ Named ranges ในไฟล์ล Google Sheets มา Logs ดูขด ้อช มลดู

var ssID = 'Your Google Sheets ID' ;
var ss = SpreadsheetApp.openById(ssID) ;

var nrange = ss.getNamedRanges() ; // พมดิ พต์ : [NamedRange]
Logger.log(nrange) ;

nrange.forEach(function(nr){

Logger.log(nr.getName()) ; // พมดิ พ์ต : Test – ชมอ่ืช Name range

Logger.log(nr.getRange().getA1Notation()) ; // พดมิ พ์ต : B4:E12 – เร้คนจต์ของ Name range

}) ;

ตวร อยาต่ งท่ีท 2 – จบข Named ranges ในช้ทรขีั ทรท่ีร ะบุช มา Logs ดชดู ่ีทรอ Named range ตวข แรก

// The code below logs the name of the first named range.

var namedRanges = SpreadsheetApp.getActiveSheet().getNamedRanges() ;

if (namedRanges.length > 1)
{

Logger.log(namedRanges[0].getName()) ;

}

6.10.ค.) setNamedRange()

setNamedRange(name, range) - เมถอดในคลาส Spreadsheet

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#setnamedrangename,-range

ใชช้สราช้ ง Named Range

พารามลิเตอร์ล

Name Type Description
name String ชอ่ืมช ทช่ืทจะใช้คต้สังีช เปป็นชอมืช่ ของ Named Range
range Range วสตั ถุเค รนค้ จต์

ตวข อย่ชางทรท่ี 1 – สราช้ ง Named range จากเร้นช จทล์ ีใทร่ ชช้เมชา้ สเ์ล ลอร ก

var ss = SpreadsheetApp.getActiveSpreadsheet() ;
ss.setNamedRange("foo", ss.getActiveRange()) ;
ss.removeNamedRange("foo") ;

ตวข อยชา่ งทร่ที 2 – สรชา้ ง Named range จากเรชน้ จ์ล D4:D10 ชั้ทรขี Sheet2

var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.setNamedRange("NameRangeX",ss.getSheetByName('Sheet2').getRange('D4:D10')) ;

โดย วสสันตต์ คคุณดดลิ กเศวต ([email protected]) 49

6.10.ง.) removeNamedRange()

removeNamedRange(name) - เมถอดในคลาส Spreadsheet

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#removenamedrangename

ใชล้ช บ Named Range พารามลเิ ตอร์ล name กค็ก รอชอร่ีท Name Range ทจรีท่ ะลบ

ตวข อยาช่ ง

ss.removeNamedRange('Test') ;

6.10.จ.) setRange() และ setName()

setRange(range) - เมถอดในคลาส NamedRange
https://developers.google.com/apps-script/reference/spreadsheet/named-range#setrangerange

ใช้ชเซก็ตหรรออพข เดทเร้นช จล์ใหชก้ บข Named range ทีทร่ร ะบชุ โดยครนค่ชากลบข มาเปน็ป Named range ตวข เดิมล

setName(name) - เมถอดในคลาส NamedRange
https://developers.google.com/apps-script/reference/spreadsheet/named-range#setnamename

ใชชเ้ ซก็ตหรอร อพข เดทชอ่ทรี ใหม่ชใหก้ช ขบ Named range ทรี่ทร ะบชุ โดยคนร คาช่ กลขบมาเปป็น Named range ตวข เดมิล

ตวข อยาช่ ง

var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheetByName('Sheet1') ;

var range1 = sheet.getRange('A1:D1') ;
var range2 = sheet.getRange('A1:D13') ;

// สรา้ค ง Named range
ss.setNamedRange("DataHeader", range1) ;

var NameRangesAll = ss.getNamedRanges() ;

NameRangesAll.forEach(function(nr){ // ดผย ลทื่ชท Logs ------- > (1.)
Logger.log(nr.getName()) ; // ดผย ลท่ืชท Logs ------- > (2.)
Logger.log(nr.getRange().getA1Notation()) ;

}) ;

NameRangesAll.forEach(function(nr){

// แก้คเร้คนจ์ใต หก้ค บสั Named range ชอมชื่ DataHeader

// และเปลยทช่ื นชชืมอ่ Named range เปนป็ DataTable

if(nr.getName() == 'DataHeader')

{

nr.setRange(range2) ; // เซ็ตจ เรค้นจ์ใต หมต่

Logger.log(nr.setName('DataTable').getName()) ; // ดผย ลท่ืชท Logs ------- > (3.)

Logger.log(nr.getRange().getA1Notation()) ; // ดยผลทท่ชื Logs ------- > (4.)

}

})

50 เซอรว์ร ิสว Spreadsheet


Click to View FlipBook Version