ผล
Logs
[ 1. ] DataHeader
[ 2. ] A1:D1
[ 3. ] DataTable
[ 4. ] A1:D13
6.10.ฉ.) remove()
remove() - เมถอดในคลาส NamedRange
https://developers.google.com/apps-script/reference/spreadsheet/named-range#remove
ใช้ชลบ Named ramges
ตวร อยาต่ ง - ลบทกุช Named ranges ในไฟลล์ Google Sheets
// ลบ Named ranges ทุคกตสวั ใน Spreadsheeet
var namedRanges = SpreadsheetApp.getActive().getNamedRanges();
for (var i = 0 ; i < namedRanges.length ; i++) {
namedRanges[i].remove() ;
}
ตรวอยาต่ ง - ลบทุชก Named ranges ในชรีขัท้ ทจี่รท บข มา
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var nrInSheet = ss.getSheetByName('sheetname').getNamedRanges() ;
nrInSheet.forEach(function(nr){
nr.remove() ;
}) ; // foreach
โดย วสนัส ต์ต คคณุ ดิลด กเศวต ([email protected]) 51
6.11. offset()
offset(rowOffset, columnOffset) – เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#offsetrowoffset,-columnoffset
offset(rowOffset, columnOffset, numRows) – เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#offsetrowoffset,-columnoffset,-numrows
offset(rowOffset, columnOffset, numRows, numColumns) – เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#offsetrowoffset,-columnoffset,-numrows,-numcolumns
offset ใช้ชเลอ่ทรี น หด หรอร ขยายเรชน้ จล์ออกไป โดยครนคาช่ กลขบมาเปนป็ วตข ถชุ Range เหมอร นเดลมิ
พารามลิเตอรล์
Name Type Description
rowOffset
Integer ตาจ แหนง่ต แถว นบสั ลงล่ตาง จากตจาแหนตง่ มคุมซคา้ ยบน ของเรค้นจตอ์ ค้างอิงด
columnOffset เลขลบ หมายถงึถ ทศดิ ข้นีึชถ
numRows
numColumns Integer ตาจ แหนต่งคอลมัส น์ต นบสั ไปทางขวา จากตจาแหนงต่ มคมุ ซ้คายบน ของเรนค้ จ์อต คา้ งองิด
เลขลบ หมายถึงถ นบัส ไปทางซ้าค ย
Integer ความสงย ของแถว ของเรคน้ จใ์ต หมต่
Integer ความกวคา้ งของคอลมสั น์ต ของเรค้นจใ์ต หมต่
ตวข อยา่ช ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var range = sheet.getRange("A1:C2") ;
var newRange1 = range.offset(1, 1) ; // ขยบสั เร้นค จ์ทต ัสชี้งกค้อนไป 1 แถว 1 คอลมัส น์ต
Logger.log(newRange1.getA1Notation()) ; // B2:D3
var newRange2 = range.offset(3, 3, 3) ; // ขยบัส เรน้ค จท์ต งส้ัชี ก้คอนไป 3 แถว 3 คอลมัส นต์ และ
Logger.log(newRange2.getA1Notation()) ; // เลอมื กเร้นค จ์ต 3 แถว นัสบจากมุคมซค้ายบน ของเรคน้ จตใ์ หมต่
// D4:F6
var newRange3 = range.offset(5, 4, 2, 2) ; // ขยบสั เร้นค จต์ทช้ีัสงกคอ้ นไป 5 แถว 4 คอลมัส นต์ และ
Logger.log(newRange3.getA1Notation()) ; // เลอืม กเรค้นจต์ 2 แถว 2 คอลมัส นต์
// นัสบจากมุคมซา้ค ยบน ของเรน้ค จใต์ หมต่
// E6:F7
ผล
52 เซอรรว์ สวิ Spreadsheet
6.12. setValue() และ setValues()
setValues(value) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setvaluevalue
setValues(values) – เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setvaluesvalues
Set a range's values
https://developers.google.com/google-ads/scripts/docs/examples/spreadsheetapp#set-a-ranges-values
setValue() และ setValues() ใชช้กรอกขช้อมดูลลงไปในเรช้นจล์ โดย setValue() กรอกลงในเซลลล์เดีรยว สช่วน
setValues() กรอกลงในเรนช้ จล์(หลายเซลล์ล)
พารามเลิ ตอรล์ value เป็ปนค่าช ใดๆ String หรรอ Number เป็นป ตช้น สวช่ น พารามเิล ตอรล์ values เปป็นอาเรย์ล 2
มตลิ ิล
ตวข อย่ชางการใชง้ช าน setValue()
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var cell = sheet.getRange("B2") ;
cell.setValue(100) ;
ตวข อย่ชางการใชช้ setValues()
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var values = [ [ "2.000", "1,000,000", "$2.99" ] ] ; // มดติ ิด 1x3
var range = sheet.getRange("B2:D2") ; // มดติ ดิ 1x3
range.setValues(values) ; // กรอกอาเรยตล์ งในเซลลต์ B2:D2
โดย วสนัส ตต์ คคณุ ดดิลกเศวต ([email protected]) 53
6.13. นาน คอลบัมน์มร าคาน นวณ แล้ชววางผลลบพั ธรไ์ วค้ช อลบัมนขร์ ชา้ งๆ
ตารางขอช้ มดลู เรทลีิ่มตน้ช มดรี งข ตอ่ช ไปน้ัรขี
โคด้ช ตช่อไปนขั้ีคร าก นวณคช่าในคอลขมน์ล Total
function addTotal(){
var ss = SpreadsheetApp.getActive() ;
var sheet1 = ss.getSheetByName("Sheet1") ;
var lastRow = sheet1.getLastRow() ;
// จสบั ขอค้ มยล ตสีช้งั แตต่แถวทืท่ช 2 จนถถึงแถวสดคุ ทคา้ ย คอลมสั นต์ A-C
var data = sheet1.getRange(2, 1, lastRow-1, 3).getValues() ;
var totalsArray = [] ; // เตรยท มอาเรยต์วต่างๆไวค้เกบ็จ ผลลพัส ธต์
data.forEach(function(row) { // ส่ตงแถวขอ้ค มลย ไปประมวลผล
var name = row[0] ; // จบสั ขอค้ มลย ตวสั ท่ทชื 0 (คอลมสั น์ต Fruit) เชตน่ Apple – ไมตไ่ ดใ้ค ชค้
var cost = row[1] ; // จับส ขอค้ มยลตวสั ทท่ืช 1 (คอลมัส นต์ Cost) เชต่น 15
var quantity = row[2] ; // จัสบขอ้ค มลย ตัสวทชท่ื 2 (คอลมัส นต์ Quantity) เชต่น 200
var total = cost * quantity ; // คาจ นวณ เช่นต ผลลพัส ธ์ต 3,000
row.push(total) ; // ยดค้ ผลการคาจ นวณ ไปตอ่ต ท้คายแถว
totalsArray.push([total]) ; // ไดผค้ ลลพสั ธ์ต เชน่ต [ Apple , 15 , 200 , 3000 ]
}) ; // End – forEach // เอาผลการคาจ นวณไปใสต่ในอาเรยต์ว่าต งๆ ทเชท่ื ตรยท มไวค้
// มท [ ] ครอบ Total หมายถถงึ ใสตอ่ าเรยตล์ งไป จึงถ เปปน็ อาเรยต์ 2 มติด ิด
sheet1.getRange(2,4, lastRow-1,1).setValues(totalsArray) ; // วางข้อค มยลในอาเรยต์ผลลัสพธ์ต ลงในเรค้นจ์ต
}
ผล – สงข เกตุชท่คีรท อลมข น์ล D
54 เซอรวร์ สิว Spreadsheet
6.14. กรอกสสูตรลงเซลลร์
6.14.ก.) setFormula()
setFormula(formula) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setformulaformula
setFormulas(formulas) – เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setformulasformulas
Set cell formula
https://developers.google.com/google-ads/scripts/docs/examples/spreadsheetapp#set-cell-formula
setFormula() ใชก้ช รอกสูดตรของ Google Sheets ลงในเรชน้ จล์ เปป็นสตดู รท่เรีท ราใชกช้ ขนอยาช่ งปกตลิในการคกานวณ
ทวี่ทข ไป เชน่ช =SUM(A2:A5) เปนป็ ต้นช
ตวข อยา่ช งที่รท 1
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var cell = sheet.getRange("B5") ;
cell.setFormula("=SUM(B3:B4)") ; // กรอกสตย ร =SUM(B3:B4) ลงในเซลล์ต B5
ตวข อยช่างทรีท่ 2 - กรอกสดตู รที่แทร ตกต่าช งกขนลงในเร้นช จล์ "=SUM(D2:D4)" ] ,
"=AVERAGE(D2:D4)" ]
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var formulas = [
["=SUM(B2:B4)", "=SUM(C2:C4)",
["=AVERAGE(B2:B4)", "=AVERAGE(C2:C4)",
] ; // มิตด ดิ 2x3
var cell = sheet.getRange("B5:D6") ; // มดิตดิ 2x3
cell.setFormulas(formulas) ;
ตวข อยา่ช งท่ีทร 3
var ss = SpreadsheetApp.getActive() ;
var sheet1 = ss.getSheetByName('Sheet1') ;
var lastRow = sheet1.getLastRow() ;
var lastColumn = sheet1.getLastColumn() ;
// จสับแถวสดุค ทค้าย+1 ในคอลัสมน์ต A (เซลลต์ A7) –> จากนน้ีสชั ใสตข่ อ้ค ความ Total ลงไป
sheet1.getRange(lastRow+1, 1).setValue("Total") ;
// จับส แถวสดคุ ทค้าย+1 ในคอลัมส นสดคุ ทคา้ ย (เซลลต์ D7) –>จากนชสัี้นใสสต่ ตย ร SUM
sheet1.getRange(lastRow+1, lastColumn).setFormula("SUM(D2:D"+lastRow+")") ;
โดย วสสนั ต์ต คคุณดดิลกเศวต ([email protected]) 55
ผล
6.14.ข.) setFormulaR1C1()
setFormulaR1C1(formula) – เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setformular1c1formula
setFormulasR1C1(formula) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setformulasr1c1formulas
setFormulaR1C1() ใชกช้ รอกสดูตรลงเรนช้ จ์ล โดยสดูตรทรีท่กรอกลงไป เปป็นสดตู รทใ่ีทร ชรช้ ะบบการอา้ช งองลิ เซลลล์แบบ
R1C1 หรรอ เปน็ป ระยะออฟเซ็กตแถวและคอลขมน์ลจากเรน้ช จ์ลอา้ช งอิงล
ตวข อยา่ช ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheetByName('Sheet1') ;
var cell = sheet.getRange("B5") ;
// กรอกสตย รลงในเซลลต์ B5 เปน็ป การ SUM ของ 3 แถว เหนมอื B5
//
cell.setFormulaR1C1("=SUM(R[-3]C[0]:R[-1]C[0])") ;
ผล
56 เซอรร์ววิส Spreadsheet
ตวข อย่าช ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var sumOfRowsAbove = "=SUM(R[-3]C[0]:R[-1]C[0])" ;
var averageOfRowsAbove = "=AVERAGE(R[-4]C[0]:R[-2]C[0])" ;
var formulas = [ [sumOfRowsAbove, sumOfRowsAbove, sumOfRowsAbove] , // มดติ ดิ 2x3
[averageOfRowsAbove, averageOfRowsAbove, averageOfRowsAbove] ] ;
var cell = sheet.getRange("B5:D6") ; // มตดิ ดิ 2x3
// กรอกสยตรลงในเซลลต์ B5:D6
// แถวทืทช่ 5(คอลมสั น์ต B-D) เปป็นคตา่ SUM ของ 3 แถวเหนอืม แถวทืชท่ 5 (แถว 2-4)
// แถวท่ทืช 6(คอลมัส นต์ B-D) เป็ปนคา่ต AVG ของ 3 แถวเหนอืม แถวททืช่ 5 (แถว 2-4)
cell.setFormulasR1C1(formulas) ;
ผล
6.15. getActiveRange()
getActiveRange() - เมถอดในคลาส Spreadsheet
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getactiverange
ใชช้จขบเรน้ช ต์ลในชขทัี้ร ทีรถท่ ดูกเลอร กโดยเมา้ช ส์ล โดยจะคนร คา่ช กลบข มาเป็ปนวตข ถชุ Range ซี่งทึ เราสามารถใชช้เมถอดของ
คลาส Range จบข รายละเอีรยดหรอร เซ็กตสิงล ต่ชางๆลงไปในเร้ชนจ์ลตอ่ช ได้ช
ตวร อยาต่ ง – ก่อช นรขนโคดช้ ใหเ้ช ลรอกเร้นช จไวชก้ ช่อน
โดย วสัสนตต์ คุคณดิดลกเศวต ([email protected]) 57
โคดช้
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet() ;
var activeRange = sheet.getActiveRange() ;
Logger.log(activeRange) ; // พดมิ พ์ต : Range
Logger.log(activeRange.getA1Notation()) ; // พดิมพต์ : B3:D5
Logger.log(activeRange.getSheet().getName()) ; // พิมด พ์ต : Temp
6.16. getRow(), getColumn(), getNumRows(), getNumColumns()
getRow() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#getrow
ใชจช้ บข ตกาแหน่ชงของแถวในเรชน้ จ์ล ครนค่ชาเปปน็ Interger (เลขจกานวนเต็มก )
getColumn() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#getcolumn
ใชจ้ช บข ตาก แหนช่งของคอลขมน์ใล นเรนช้ จ์ล ครนคาช่ เป็นป Interger (เลขจาก นวนเตม็ก )
getNumRows() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#getnumrows
ใชจช้ ขบจาก นวนแถวในเรน้ช จล์ คนร คาช่ เปน็ป Interger (เลขจาก นวนเต็กม)
getNumColumns() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#getnumcolumns
ใชจ้ช บข จกานวนคอลขมน์ลในเรนช้ จ์ล คนร ค่าช เปปน็ Interger (เลขจกานวนเตกม็ )
getRowIndex() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#getrowindex
ใชจ้ช บข ตาก แหนงช่ ของแถวในเร้ชนจล์ คนร คา่ช เปป็น Interger (เลขจาก นวนเตม็ก ) เหมอร นกขบ getRow()
ตวข อยา่ช งการใช้งช าน
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange("C2:E7") ; // 6 แถว 3 คอลสัมน์ต
Logger.log(range.getRow()) ; // พดิมพ์ต : 2 (เซลล์ตแรก C2 คนืม 2)
Logger.log(range.getColumn()) ; // พิดมพ์ต : 3 (เซลล์ตแรก C2 คนมื 3 กค็จ อมื C)
Logger.log(range.getNumRows()) ; // พดมิ พต์ : 6 (6 แถว)
Logger.log(range.getNumColumns()) ; // พดิมพต์ : 3 (3 คอลมสั น์ต)
Logger.log(range.getRowIndex()) ; // พมดิ พ์ต : 2
58 เซอรว์ร ิวส Spreadsheet
6.17. การลชา้ งเนช้อี หา และ การลาช้ งรสูปแบบ
6.17.ก.) clearContents()
clearContent() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#clearcontent
ใช้ชลบเนรั้อข หาทงัข้ หมดในเรน้ช จ์ล แตไ่ช มช่ลบรปดู แบบของเซลลต์ล า่ช งๆในเรชน้ จล์ โดยจะคนร คาช่ กลขบมาเป็นป คลาส
Range ตวข เดลิม
ตวข อยชา่ ง – ลาช้ งเนขรอั้ หาในเรช้นจล์ A1:D10
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var range = sheet.getRange("A1:D10") ;
range.clearContent() ;
6.17.ข.) clearFormats()
clearFormat() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#clearformat
ใช้ชลช้างรดปู แบบทง้ัข หมดในเรนช้ จล์ แตไ่ช มลช่ บเนรขัอ้ หาตา่ช งๆในเรน้ช จล์ โดยจะคนร คาช่ กลขบมาเป็ปนคลาส Range
ตวข อยชา่ ง – ลา้ช งรูปด แบบในเร้นช จ์ล A1:D10
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var range = sheet.getRange("A1:D10") ;
range.clearFormat() ;
6.18. appendRow()
Append rows to a spreadsheet
https://developers.google.com/google-ads/scripts/docs/examples/spreadsheetapp#append-rows-to-a-spreadsheet
appendRow(rowContents) - เมถอดในคลาส Sheet
https://developers.google.com/apps-script/reference/spreadsheet/sheet#appendrowrowcontents
ใชแ้ช นบแถวขอ้ช มดลู ตอ่ช จากแถวสุชดทาช้ ยในชัขีรท้ พารามิเล ตอรล์ rowContents เป็นป อาเรย์เล ส้นช 1 แถว
ตวข อยช่าง
var ssID = 'Your Spreadsheet Id' ;
var sName = 'Sheet1' ;
var ss = SpreadsheetApp.openById(ssID) ;
var sheet = ss.getSheetByName(sName) ;
sheet.appendRow([ 'a man' , 'a plan' , 'panama' ]) ;
โดย วสสันต์ต คณคุ ดลิด กเศวต ([email protected]) 59
ผล
6.19. โนต้ช
6.19.ก.) setNote() และ setNotes()
setNote(note) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setnotenote
setNote() ใชกช้ รอกโนชต้ ให้ชกขบทชุกเซลลล์ในเร้ชนจล์
setNotes(notes) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setnotesnotes
setNotes() ใชก้ช รอกโน้ชตใหช้กขบแต่ลช ะเซลล์ใล นเรนช้ จล์ โดยพารามิเล ตอร์ล notes เป็นป ข้อช ความโน้ชต ในอาเรย์ล
2 มติล ิล ซทีึ่งจะตอช้ งมมรี ติล เิล ท่าช กขบเรนช้ จล์
ตวข อยา่ช ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var cell = sheet.getRange("B2") ;
cell.setNote("This is a note") ;
ผล
60 เซอรรว์ สวิ Spreadsheet
ตวข อย่าช ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
// The size of the two-dimensional array must match the size of the range.
var notes = [
["it goes" , "like this", "the fourth, the fifth" ] ,
["the minor fall" , "and the", "major lift" ]
] ; // มิตด ิด 2x3
var cell = sheet.getRange("B2:D3") ; // มิตด ดิ 2x3
cell.setNotes(notes) ;
ผล
6.19.ข.) clearNote()
clearNote() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#clearnote
ใชชล้ าช้ งโนตช้ ออกจากเรช้นจล์
ตวข อยชา่ ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var range = sheet.getRange("A1:D10") ;
range.clearNote() ;
โดย วสสันต์ต คณคุ ดลิด กเศวต ([email protected]) 61
62 เซอร์วร วิส Spreadsheet
บททที่ 7
กลุลม่ ของเร้นช จ์ร
7.1. getRanges()
getRanges() - เมถอดในคลาส RangeList
https://developers.google.com/apps-script/reference/spreadsheet/range-list#getranges
ใชจช้ ขบเร้ชนจ์ลท่ีทรถดูกเลรอก มขกใชชก้ ขบการเลรอกไว้ชหลายเร้ชนจ์ล โดยการกด <Ctrl>+เลชอกเร้นช จ์ร โดยจะครนค่าช กลขบ
มาเป็ปน Range[]-วสัตถุคRange ททชื่เก็บจ อยยตใ่ นอาเรย์ต โดยมีจร กานวนสมาชิลกตามจาก นวนเร้ชนจล์ที่ทรถูดกเลรอก เช่ชน เลรอกไวช้ 3
เรชน้ จล์ กจ็ก ะคนร คา่ช กลขบมาเปปน็ [Range, Range, Range] เปป็นตน้ช
ดตูด ขวอยช่างในขอช้ 7.2 เร่ทีอร ง getActiveRangeList() หน้าช 64
7.2. getActiveRangeList()
getActiveRangeList() - เมถอดในคลาส Spreadsheet
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getactiverangelist
ใชจ้ช ขบเรชน้ ตทล์ ข้งั หมดทเที่ร ลอร ก โดยคนร คา่ช กลบข มาเปนป็ คลาส RangeList ถชา้ ไมชม่ เีร รชน้ จท์ล ทรีถ่ กดู เลอร ก จะคนร คช่า null
ถา้ช เลรอกไว้ชเรช้นจเล์ ดีรยว getActiveRangeList() ใช้งช านเหมรอน getActiveRange() ฉะนน้ขั getActiveRangeList()
มขกใช้ชกบข การเลรอกไว้ชหลายเร้นช จ์ล
ตวร อย่ตาง
กชอ่ นรขนโคช้ดต่ชอไปนขั้ีร ให้ชเลรอกเร้ชนจล์ในชีั้รขทไว้ชกช่อน โดยให้ชเลรอกมากกว่ชา 1 เร้ชนจ์ล โดยกด <Ctrl>+เลชอกเร้ชนจ์ร
จะเปปน็ การเลอร กเพ่ิลีมท ทีลร ะบลอ็ก ค(หรรอทีลร ะเร้ชนจ์ล)
โคดช้
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet() ;
var rangeLists = sheet.getActiveRangeList() ;
var rangeLists_RANGES = rangeLists.getRanges() ;
Logger.log(rangeLists) ; // พมดิ พต์ : RangeList
Logger.log(rangeLists_RANGES) ; // พมดิ พ์ต : [Range, Range, Range]
rangeLists_RANGES.forEach(function(range){
Logger.log(range.getA1Notation()) ; // ดผย ลทท่ชื Logs –------ > [03],[04],[05]
}) ; // Close - forEach
64 เซอรวร์ ิวส Spreadsheet
ผล // เลอมื กไว้ค 3 เรคน้ จต์
// เร้นค จท์ต ืทช่ 1
Logs // เรค้นจตท์ ่ทืช 2
// เรค้นจ์ตท่ชทื 3
[ 01 ] RangeList
[ 02 ] [Range, Range, Range]
[ 03 ] B1:C3
[ 04 ] C4:D5
[ 05 ] E2:E3
7.3. getRangeList()
getRangeList(a1Notations) - เมถอดในคลาส Spreadsheet
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getrangelista1notations
ใชจ้ช ขบเรน้ช ตล์ทัข้งหมดท่ทเีร ลรอก โดยครนคา่ช กลขบมาเปปน็ วตข ถุช RangeList พารามิลเตอร์ลทรที่ต้อช งระบกุช ็คก รอ เรชน้ จ์รสตรงวิ
โดยต้ชองระบชใุ นลกข ษณะ String[‘a1Notations’,‘a1Notations’,‘a1Notations’, … ]
ตวข อยช่าง
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet() ;
var rangeList = sheet.getRangeList(['A1:D4', 'F1:H4']) ;
var ranges = rangeList.getRanges() ;
ranges.forEach(function(r){
Logger.log(r.getA1Notation()) // ดผย ลทชื่ท Logs –--------- >
}) ;
ผล
Logs
[] A1:D4
[] F1:H4
7.4. getSelection() และ getCurrentCell()
getSelection() - เมถอดในคลาส Spreadsheet
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#getselection
getSelection() ใชช้จขบเรน้ช จล์ทรที่เลรอก โดยจะคนร คชา่ กลขบมาเป็ปนคลาส Selection โดยภายในวตข ถชุ Selection
ททคี่ร รนคา่ช มา มรชี นลดิ การเลรอกอยดูช่ เชช่น Current cell, Active Range และ RangeList
getCurrentCell() - Mothoed ในคลาส - Selection
https://developers.google.com/apps-script/reference/spreadsheet/selection#getcurrentcell
ครน Current cell ในแอ็คก ทฟีร เร้นช จก์ล ลขบมา หรรอ วตข ถุใช นคลาส Range
คลาส Selection
https://developers.google.com/apps-script/reference/spreadsheet/selection.html
คลาส Selection ใชเช้ ข้ชาถึทงเรช้นจล์ทแ่ีรท อก็คทีรฟ โดยคลาส Selection เป็ปนกลุม่ช ของเซลลล์ทีทผ่ร ดู้ชใช้ชงานเลรอก ซทึี่งจะ
ปรากฎเปปน็ ไฮไลทส์ล ฟรี ฟ้า(ตามภาพ) และมรีได้ชหลายบล็อก ค
โดย วสสนั ต์ต คุคณดดิลกเศวต ([email protected]) 65
ตวข อยาช่ งที่รท 1 - ชท้ขัีร ถูดกเลอร กไว้ช 2 เร้ชนจ์ล หรรอ RangeList มีร 2 Range เซลลไล์ ฮไลทล์สฟีร ฟา้ มีร 1 เซลลล์ ก็กครอ
Current cell เปน็ป เซลล์ทล รีอ่ท ยชดู่ในโฟกสข (มกท รอบสทนาน้ัร เงมนเข้มช ) หาก Current cell อยด่ชทู ่ีเรท รชน้ จล์ใด เรนช้ จน์ล ้ขนั เปน็ป
Active Range
var selection = SpreadsheetApp.getActiveSpreadsheet().getSelection();
var currentCell = selection.getCurrentCell() ; // D1
ตวข อยา่ช งทีร่ท 2 – ใชชก้ ารเลรอกเหมรอนตวข อยาช่ งขาช้ งบน
function test_getSelection() {
var activeSheet = SpreadsheetApp.getActiveSheet() ; // จบัส ชที้ทช ทเชท่ื ปดปิ อยต่ย
var rangeList = activeSheet.getRangeList(['A1:B4', 'D1:E4']) ; // จัสบ 2 เรค้นจต์
rangeList.activate() ; // เลืมอก 2 เร้นค จต์
var selection = activeSheet.getSelection();
Logger.log('Current Cel l: ' + selection.getCurrentCell().getA1Notation());
// พมดิ พต์ : Current Cell : D1
Logger.log('Active Range: ' + selection.getActiveRange().getA1Notation());
// พมดิ พ์ต : Active Range : D1:E4
var ranges = selection.getActiveRangeList().getRanges();
for (var i = 0; i < ranges.length; i++) {
Logger.log('Active Ranges: ' + ranges[i].getA1Notation());
// พมิด พต์ : Active Ranges : A1:B4
// พมิด พ์ต : Active Ranges : D1:E4
}
Logger.log('Active Sheet : ' + selection.getActiveSheet().getName());
// พดมิ พ์ต : (ชอชท่ี ชั้ขทททเ่ที ปดิป อย่ทูด)
}
ผล
Logs
[ 01 ] Current Cell : D1
[ 02 ] Active Range : D1:E4
[ 03 ] Active Ranges : A1:B4
[ 04 ] Active Ranges : D1:E4
[ 05 ] Active Sheet : Sheet1
66 เซอรว์ร ิสว Spreadsheet
7.5. setActiveRange()
setActiveRange(range) – เมถอดในคลาส Spreadsheeet
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#setactiverangerange
ใช้ชกกาหนดเร้ชนจ์ล ใหเช้ ป็ปนแอ็กคทรฟี เรนช้ จ์ล(คลาช้ ยการเลอร กเรช้นจโล์ ดยใชชเ้ มชา้ ส์ล) ซงึท่ี จากนัขน้ เราจะสามารถใชช้เมถอด
ตา่ช งๆกขบแอกค็ ทรีฟเร้นช จ์ไล ด้ช เช่ชน getCurrentCell() หรอร getActiveRange()
ตวข อย่าช ง
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet() ;
var range = sheet.getRange('A1:D4') ;
sheet.setActiveRange(range) ;
var selection = sheet.getSelection() ;
// Current cell: A1
var currentCell = selection.getCurrentCell() ;
// Active Range: A1:D4
var activeRange = selection.getActiveRange() ;
7.6. setCurrentCell()
setCurrentCell(cell)– เมถอดในคลาส Spreadsheeet
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#setcurrentcellcell
ใชกช้ กาหนดให้ชเรนช้ จ์ล 1 เซลล์ล เปป็น Current cell.getDataValidation พารามลิเตอร์ล cell กค็ก อร เร้ชนจ์ลของ 1
เซลล์ล
ตวข อยช่าง
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet() ;
var cell = sheet.getRange('B5') ;
sheet.setCurrentCell(cell) ;
var selection = sheet.getSelection() ;
// Current cell : B5
var currentCell = selection.getCurrentCell() ;
โดย วสันส ตต์ คคุณดดิลกเศวต ([email protected]) 67
7.7. activate()
activate() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#activate
activate() ทใีรท่ ชก้ช กาหนดให้ชเรชน้ จเ์ล ป็ปนตวข แอคก็ ทฟรี คลาช้ ยกขบการเลอร กเม้าช ส์ทล เีทร่ รน้ช จล์
ตวข อยาช่ ง
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[4] ;
var range = sheet.getRange('B2:D5') ;
range.activate() ; // เลือม กเรค้นจต์
var selection = sheet.getSelection() ;
var currentCell = selection.getCurrentCell() ; // Current cell: B2
var activeRange = selection.getActiveRange() ; // Active Range: A2:D5
ผล
7.8. getNextDataCell() และ getNextDataRange()
7.8.ก.) getNextDataCell()
getNextDataCell(direction) – เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#getnextdatacelldirection
ใช้ชเลรอกเร้นช จ์ล โดยการเลรอกเร้ชนจ์แล บบน้ีรัข มีรลกข ษณะเหมอร นกบข เลอร กเร้ชนจ์ไล ว้ช แล้วช กด <Ctrl><Arrow>
เรล่มีทิ จากเซลลทล์ ทีมร่ ชุมซ้าช ยบนของเรน้ช จ์ล ททเีร่ ลรอกไว้แช ล้วช ครนคช่ากลขบมาเปป็นเรน้ช จ์ขล องเซลล์ล ตามทิศล ทางทกรีท่ กาหนด
โดย เปปน็ เรชน้ จลข์ องเซลลส์ล ดุช ทา้ช ยทีท่รมรีข้อช มูลด ตช่อเนอ่รที งกขบเรน้ช จ์เล ริลท่ีมต้นช หรอร ครนค่าช เป็นป เรช้นจข์ล องเซลลเ์ล รท่มีลิ ตช้นของขชอ้ มูลด
ในเรช้นจล์ถขดไปทีทร่ขชอ้ มูลด ขาดจากเรน้ช จเ์ล รที่ลิมตชน้ หรอร ครนค่าช เปป็นเรน้ช จ์ขล องเซลล์ทล ีข่ทร อบตารางคาก นวณ
พารามเิล ตอรล์ direction กก็คอร Enum Direction ดงข ตารางตอช่ ไปนี้รขั
https://developers.google.com/apps-script/reference/spreadsheet/direction
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.
68 เซอรร์วสวิ Spreadsheet
ตวข อย่ชาง
// สมมตุค ิดวต่าตารางคจานวณว่ตาง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var range = sheet.getRange("C3:E5") ; // มิดตดิ 3x3
// Logs "C1"
Logger.log(range.getNextDataCell(SpreadsheetApp.Direction.UP).getA1Notation()) ;
// Logs "A1"
Logger.log(range.getNextDataCell(SpreadsheetApp.Direction.PREVIOUS).getA1Notation()) ;
7.8.ข.) getNextDataRange()
getNextDataRange(direction) – เมถอดในคลาส Selection
https://developers.google.com/apps-script/reference/spreadsheet/selection#getnextdatarangedirection
ใช้เช ลอร กเรช้นจล์ โดยการเลรอกเรนช้ จล์แบบนัข้รี มลีร กข ษณะเหมอร นกขบ การเลรอกเรน้ช จลเ์ รมทีิ่ล ต้นช ไวช้ จากนนขั้ กด
<Ctrl><Shift><Arrow> เพทรอี่ เลอร กเรนช้ จล์เพ่ีทลิมเตลิมหรอร เปลยรท่ี นไป ตามทลิศทางของลดกู ศร
เรทิลม่ี ต้ชนจากเรช้นจท์ล ี่ทรเลอร กไวแ้ช ล้วช มรี Current cell และ Active Range และเคลอ่ีรท นไปตามทลิศทางทกรีท่ าก หนด
ตวข อยาช่ ง
// สมมคตุ ิวด า่ต ตารางคาจ นวณวา่ต ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
// เลมือกเรค้นจ์ต โดย C3 เปนป็ Current cell และ C3:E5 เปปน็ Active range.
sheet.getRange("C3:E5").activate() ;
// Logs "C1:E3"
Logger.log(SpreadsheetApp.getSelection()
.getNextDataRange(Direction.UP).getA1Notation()) ;
โดย วสัสนต์ต คุคณดลิด กเศวต ([email protected]) 69
70 เซอร์วร วิส Spreadsheet
บททีท่ 8
รรูปแบบ
8.1. setNumberFormat()
8.1.ก.) setNumberFormat()
Set cell number format
https://developers.google.com/google-ads/scripts/docs/examples/spreadsheetapp#set-cell-number-format
setNumberFormat(numberFormat) – เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setnumberformatnumberformat
https://developers.google.com/sheets/api/guides/formats - Date and Number Formats
ใชจช้ ดข รูปด แบบตวข เลขหรอร วนข ทใ่ีรท นเซลลล์ โดยใชช้ Date and time format patterns (Format code) ถ้ชาจดข รูปด
แบบเอง สามารถทาก ไดช้โดยใชเ้ช มนูด Format → Number → More Formats → Custom number format
เช่นช
Date-time Patterns
mmmm d \[dddd\] ตวข อยช่างผลลพข ธ์ล April 5 [Tuesday]
dddd, m/d/yy at h:mm ตวข อยช่างผลลพข ธ์ล Tuesday, 4/5/16 at 16:08
hh:mm A/P".M." ตวข อย่ชางผลลพข ธล์ 04:08 P.M.
Elapsed Time Patterns (เวลาททืชผ่ ตา่ นไป)
[hh]:[mm]:[ss].000 ตวข อยช่างผลลพข ธล์ 03:13:41.255
ตวข อยาช่ ง
var ssID = 'Spreadsheet Id' ;
var ss = SpreadsheetApp.openById(ssID) ;
var sheet = ss.getSheetByName('Sheet1') ;
var cell = sheet.getRange('B2') ;
cell.setNumberFormat('0.000') ;
ผล – เซลลล์ B2 ตวข เลขเปล่ีรยท นเปปน็ ทศนยิล ม 3 ตกาแหนงช่
→
8.1.ข.) setNumberFormats()
setNumberFormats(numberFormats) – เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setnumberformatsnumberformats
เหมรอนกขนกขบ setNumberFormat() เพยรี งแตใช่ ช้กช ขบทุชกเซลลใ์ล นเรน้ช จ์ล โดยจะคนร คาช่ กลขบมาเปนป็ วตข ถุช
Range พารามิลเตอร์ล numberFormats เป็ปนอารเยล์ 2 มติล ลขิ อง Date and time format patterns (Object[][])
72 เซอรร์วสิว Spreadsheet
ตวข อยช่าง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
// ขนาดมิดตอิด าเรยตข์ องพารามดเิ ตอร์ต Formats จะตค้องแมทกสบั Range
var formats = [ [ "0.000", "0,000,000", "$0.00" ] ] ; // 1 แถว 3 คอลมัส นต์
var range = sheet.getRange("B2:D2") ; // 1 แถว 3 คอลมัส น์ต
range.setNumberFormats(formats) ;
ผล
8.2. เส้ชนขอบ
setBorder(top,left,bottom,right,vertical,horizontal) - เมถอดในคลาส Spreadsheeet
https://developers.google.com/apps-script/reference/spreadsheet/range#setbordertop,-left,-
bottom,-right,-vertical,-horizontal
setBorder(top,left,bottom,right,vertical,horizontal,color,style) - เมถอดในคลาส Spreadsheeet
https://developers.google.com/apps-script/reference/spreadsheet/range#setbordertop,-left,-
bottom,-right,-vertical,-horizontal,-color,-style
พารามเิล ตอรล์
Name Type Description
top Boolean เสนค้ ขอบบน ( true=ขดท เส้นค false=เอาเส้คนออก null=ปลอ่ต ยไวเค้ หมืมอนเดิมด )
left Boolean เสค้นขอบซา้ค ย ( true=ขดท เส้คน false=เอาเสน้ค ออก null=ปลตอ่ ยไวเ้ค หมมือนเดดิม)
bottom Boolean เสค้นขอบลาต่ ง ( true=ขดท เส้นค false=เอาเสนค้ ออก null=ปล่ตอยไวค้เหมือม นเดดิม)
right Boolean เสนค้ ขอบขวา ( true=ขดท เส้นค false=เอาเสคน้ ออก null=ปลอ่ต ยไว้คเหมืมอนเดมดิ )
เสคน้ กลางแนวดชดิืง่ (เลอมื กหลายเซลลต์)
vertical Boolean (true=ขดท เส้คน false=เอาเสนค้ ออก null=ปลตอ่ ยไว้เค หมอมื นเดิมด )
เสค้นกลางแนวนอน(เลอมื กหลายเซลล)ต์
horizontal Boolean (true=ขดท เส้คน false=เอาเสนค้ ออก null=ปลอ่ต ยไว้คเหมมือนเดมิด )
โคด้ค สทในสสญั ลัสกษณ์ต CSS เชนต่ '#ffffff' or 'white' (หากเว้คนไว้ค=black)
color String รยปแบบของเสนค้ (หากเวน้ค ไวค้=solid)
style BorderStyle
Enum BorderStyle
Property Type Description
DOTTED Enum Dotted line borders.
DASHED Enum Dashed line borders.
SOLID Enum Thin solid line borders.
SOLID_MEDIUM Enum Medium solid line borders.
SOLID_THICK Enum Thick solid line borders.
DOUBLE Enum Two solid line borders.
โดย วสสนั ต์ต คคุณดดิลกเศวต ([email protected]) 73
ตวข อยา่ช ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var cell = sheet.getRange("B2") ;
// ขดท เสน้ค ขอบ บน-ล่าต ง แตปต่ ลอต่ ย ซาค้ ย-ขวา ไวเค้ หมมอื นเดดิม เสคน้ กลางด่ิืดงช -นอน ไม่ตขดท /เอาเสค้นออก
cell.setBorder(true, null, true, null, false, false) ;
ตวข อยา่ช ง - ขดรี เสนช้ ขอบสแรี ดงโดยรอบแอคทฟรี เซลลล์
var ac = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveCell() ;
ac.setBorder(true,true,true,true,null,null,"Red", SpreadsheetApp.BorderStyle.SOLID ) ;
8.3. แบ็อคกราวนร์
เมถอดกลมชุ่ setBackground ใชร้ช ะบายสรีพรน้ัข หลขงให้เช รช้นจล์ โดยระบชสุ ีเร ปปน็ RGB หรอร CSS
8.3.ก.) setBackground() และ setBackgrounds()
setBackground(color) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setbackgroundcolor
ใชก้ช กาหนดสขรี องพ้ัขนร หลงข ให้ชกบข เซลลใล์ นเรน้ช จ์ล
setBackgrounds(color) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setbackgroundscolor
ใชกช้ กาหนดสรขี องพรขั้นหลขงใหก้ช บข หลายเซลล์ลในเรช้นจล์ โดยกาก หนดให้ชแตกตช่างกขนไดช้
พารามเลิ ตอรล์
Name Type Description
color String โคดค้ สทในสญัส ลกัส ษณต์ CSS เช่นต '#ffffff' or 'white' (หากเว้คนไวค้=black)
พารามิลเตอรล์ color ใชช้เปนป็ Enum ThemeColorType กก็ได้ช
Enum ThemeColorType
https://developers.google.com/apps-script/reference/spreadsheet/theme-color-type
Property Type Description
UNSUPPORTED Enum Represents a theme color that is not supported.
TEXT Enum Represents the text color.
BACKGROUND Enum Represents the color to use for chart's background.
ACCENT1 Enum Represents the first accent color.
ACCENT2 Enum Represents the second accent color.
ACCENT3 Enum Represents the third accent color.
ACCENT4 Enum Represents the fourth accent color.
ACCENT5 Enum Represents the fifth accent color.
ACCENT6 Enum Represents the sixth accent color.
HYPERLINK Enum Represents the color to use for hyperlinks.
74 เซอรวร์ วิส Spreadsheet
ตวข อยชา่ งท่ีทร 1
// ระบายพช้ีืนม หลังส สทแดงใหก้ค บสั เร้นค จ์ต B2:D5
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var range = sheet.getRange("B2:D5") ;
range.setBackground("red") ;
ตวข อยาช่ งทที่ร 2
// ระบายพ้ีชืมนหลงสั ใหก้ค บัส เรค้นจ์ต B2:D3 โดยใชค้สแท ตกตาต่ งกสัน
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var colors = [
["red", "lime", "blue" ] ,
["#FF0000", "#00FF00", "#0000FF" ]
];
// green เบอร์ตสคท อมื #008000 เขม้ค กวา่ต #00FF00
var cell = sheet.getRange("B2:D3") ;
cell.setBackgrounds(colors) ;
ผล
ตวข อยา่ช งที่ทร 3 - ใสสช่ เีร ป็ปน Enum
var range = SpreadsheetApp.getActiveSpreadsheet().getRange('A1:B5') ;
range.setBackground(SpreadsheetApp.ThemeColorType.ACCENT1) ;
8.3.ข.) setBackgroundRGB()
setBackgroundRGB(red, green, blue) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range.html#setbackgroundrgbred,-green,-blue
พารามิเล ตอร์ล
Name Type Description
red Integer คา่ต ของสแท ดงในรยปแบบ RGB notation (ตวัส เลข 0-255)
green Integer คาต่ ของสทเขยท วในรยปแบบ RGB notation. (ตัสวเลข 0-255)
blue Integer คาต่ ของนี้จชาเงนดิ ในรยปแบบ RGB notation. (ตัวส เลข 0-255)
โดย วสนัส ต์ต คคณุ ดดิลกเศวต ([email protected]) 75
ตวข อยาช่ ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var cell = sheet.getRange("B2") ;
// ระบายสพท นชีืม้ หลัสงเปป็นสทขาว
cell.setBackgroundRGB(255, 255, 255) ;
// ระบายสพท น้ีชืม หลสังเปปน็ สแท ดง
cell.setBackgroundRGB(255, 0, 0) ;
8.3.ค.) ลงิว คร์เครีอทช่ งมอช ชว่ท ยเลชอกสท
Colors Tutorial
https://www.w3schools.com/colors/default.asp
HTML Color Picker
https://www.w3schools.com/colors/colors_picker.asp
Colors RGB
https://www.w3schools.com/colors/colors_rgb.asp
HTML Color Shades
https://www.w3schools.com/colors/colors_shades.asp
HTML Color Names
https://www.w3schools.com/colors/colors_names.asp
8.3.ง.) setBackgroundObject()
คลาส Color
https://developers.google.com/apps-script/reference/spreadsheet/color
setBackgroundObject(color) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setbackgroundobjectcolor
ใชรช้ ะบายสีรพนขรั้ หลขงใหช้กบข ทชกุ เซลลใ์ล นเรนช้ จล์ โดยพารามลเิ ตอร์ล color เปปน็ วขตถชุ color (ดเูด พ่ทิลมี เตลิมคลาส Color)
setBackgroundObjects(color) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setbackgroundobjectscolor
เหมอร นกบข setBackgroundObject() เพรยี งแตสช่ ามารถระบายสีรในเร้นช จ์ใล ห้แช ตกตาช่ งกนข ได้ช โดย
พารามิลเตอร์ล เปปน็ อาเรยข์ล องวขตถชุสีร (Color[][]) ซงึี่ท จะตอ้ช งแมทกขบมลติ ิลของเรน้ช จ์ทล จีร่ท ะระบายสรีลงไป
newColor() - เมถอดในคลาส Spreadsheeet
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#newcolor
ตวข สราช้ งสาก หรบข สรช้างวตข ถชุ Color ตอช้ งจบดวช้ ยเมถอด build() เพทีอ่ร สรา้ช งวตข ถชุสรีกอ่ช นนาก ไปใชง้ช าน
ตวข อยาช่ ง
var rgbColor = SpreadsheetApp.newColor().setRgbColor("#FF0000").build() ;
76 เซอรร์วสิว Spreadsheet
ตวข อยา่ช ง - การใชชง้ าน setBackgroundObject()
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
varฺ bgColor = SpreadsheetApp.newColor()
.setThemeColor(SpreadsheetApp.ThemeColorType.BACKGROUND)
.build() ;
var range = sheet.getRange("B2:D5") ;
range.setBackgroundObject(bgColor) ;
ตวข อย่ชาง - การใชง้ช าน setBackgroundObjects()
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var colorAccent1 = SpreadsheetApp.newColor()
.setThemeColor(SpreadsheetApp.ThemeColorType.ACCENT1)
.build() ;
var colorAccent2 = SpreadsheetApp.newColor()
.setThemeColor(SpreadsheetApp.ThemeColorType.ACCENT2)
.build() ;
var colorAccent3 = SpreadsheetApp.newColor()
.setThemeColor(SpreadsheetApp.ThemeColorType.ACCENT3)
.build() ;
var colorAccent4 = SpreadsheetApp.newColor()
.setThemeColor(SpreadsheetApp.ThemeColorType.ACCENT4)
.build() ;
var colors = [
[colorAccent1, colorAccent2],
[colorAccent3, colorAccent4]
];
var cell = sheet.getRange("B2:C3") ;
cell.setBackgroundObjects(colors) ;
ผล
โดย วสนสั ตต์ คุณค ดลิด กเศวต ([email protected]) 77
8.4. กนาหนคุคณลับกษณะใหชก้ บับ เร้ชนจร์
ขอ้ช นขเ้ัรี ปนป็ วลิธทีร ่ทรีผชูด้เขยรี นใช้ชบช่อยในการเขรยี น Apps Script เพอ่ทีร ตกแตชง่ เร้นช จ์ล เพราะงาช่ ย แตว่ช ชา่ หากตอช้ งจขดรดูป
แบบเซลล์ลเยอะๆ ซาข้ัก ๆ เราจะต้ชองจดข ระเบรยี บใหช้ดรี ไมว่ช ่ชาจะเป็ปนการกกาหนดสทีร ี่เทร ป็ปนมาตรฐาน หรอร สรา้ช งฟงปั กล์ชนขีท่
แยกเพี่ทรอใหง้ช ช่ายตอช่ การเรรยี กใช้ช เพทอี่ร จขดรดปู แบบเดิมล ซัา้กข อรกี ซ่งทึี จะสะดวกในการแกชไ้ ขดว้ช ย
8.4.ก.) setFontFamily() และ setFontFamilies()
setFontFamily(fontFamily) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setfontfamilyfontfamily
ใชก้ช าก หนดฟอนตใ์ล ห้ชกบข ทกุช เซลลล์ในเรนช้ จล์ โดยพารามิลเตอรล์ fontFamily เปป็นช่อรที ฟอนตล์
setFontFamilies(fontFamilies) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setfontfamiliesfontfamilies
เหมรอนกขบ setFontFamily() เพรยี งแตช่สามารถกาก หนดให้แช ตลช่ ะเซลล์ลในเร้ชนจ์ลมฟีร อนตล์ทท่รีแตกต่ชางกขนได้ช โดย
พารามเิล ตอร์ล fontFamilies เปปน็ ชทร่อี ฟอนตล์ในอาเรยล์ 2 มลิตลิ ทที่จร ะตอ้ช งแมทกบข มลิตขลิ องเรนช้ จล์
ตวข อยาช่ งทีทร่ 1
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var cell = sheet.getRange("B2") ;
cell.setFontFamily("Sarabun") ;
ตวข อยาช่ งทีท่ร 2
var ss = SpreadsheetApp.getActiveSpreadsheet() ; ], // 2x3
var sheet = ss.getSheets()[0] ; ] // 2x3
var fonts = [
["Sarabun" , "Prompt" , "Kanit"
["Arial" , "Sarabun" , "Prompt
];
var cell = sheet.getRange("B2:D3") ;
cell.setFontFamilies(fonts) ;
8.4.ข.) setFontSize() และ setFontSizes()
setFontSize(size) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setfontsizesize
ใชก้ช กาหนดขนาดของฟอนตใ์ล หช้กบข ทุกช เซลล์ใล นเร้นช จ์ล โดยพารามลเิ ตอร์ล size เปปน็ เลขระบชุขนาดของฟอนตล์
setFontSizes(sizes) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setfontsizessizes
เหมรอนกขบ setFontSize() เพยรี งแต่สช ามารถกกาหนดให้ชแตช่ละเซลลลใ์ นเร้นช จม์ล รีขนาดฟอนตทล์ ีทแ่ร ตกต่ชางกขนไดช้
โดยพารามเิล ตอรล์ sizes เปปน็ ขนาดฟอนต์ใล นอาเรยล์ 2 มตลิ ลิ ทที่จร ะต้ชองแมทกบข มลิตลิของเร้นช จล์
78 เซอรวร์ สวิ Spreadsheet
ตวข อย่ชาง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var cell = sheet.getRange("B2") ;
cell.setFontSize(20) ;
ตวข อย่ชาง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
// มดติ ิดอาเรยขต์ อง Sizes จะตอ้ค งแมทกับส มดิตขิด องเรน้ค จ์ต
var fontSizes = [ [16, 20, 24] ] ; // 1x3
var range = sheet.getRange("B2:D2") ; // 1x3
range.setFontSizes(fontSizes) ;
8.4.ค.) setFontWeight() และ setFontWeights()
setFontWeight(fontWeight) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setfontweightfontweight
ใช้กช าก หนดความหนาของฟอนต์ลให้กช บข ทกชุ เซลล์ใล นเร้นช จล์ โดยพารามลิเตอรล์ fontWeight เป็ปน String ดขงตอ่ช ไป
นี้ขัร 'bold', 'normal' หรรอ null (รีเร ซตก็ ความหนา)
setFontWeights(fontWeights) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setfontweightsfontweights
เหมอร นกบข setFontWeight() เพรยี งแต่ชสามารถกกาหนดใหช้แตชล่ ะเซลลล์ในเรช้นจ์มล คีร วามหนาของฟอนตล์ที่แทร ตก
ตา่ช งกขนได้ช โดยพารามเิล ตอรล์ fontWeights เป็นป ค่าช ความหนาฟอนต์ใล นอาเรย์ล 2 มิลตลิ ททรจ่ี ะต้อช งแมทกบข มิลติขล องเรน้ช จ์ล
ตวข อย่ชาง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var cell = sheet.getRange("B2") ;
cell.setFontWeight("bold") ;
ตวข อยช่าง // มดิติด 1x3
// มดิตดิ 1x3
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var fontStyles = [ [ "bold", "bold" , "normal" ] ] ;
var range = sheet.getRange("B2:D2") ;
range.setFontWeights(fontStyles) ;
โดย วสสนั ตต์ คณคุ ดิลด กเศวต ([email protected]) 79
8.4.ง.) setFontStyle(fontStyle) และ setFontStyles(fontStyles)
setFontStyle(fontStyle) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setfontstylefontstyle
ใชกช้ กาหนดการเอรยี งของฟอนตล์ใหชก้ บข ทกุช เซลลลใ์ นเร้นช จ์ล โดยพารามิลเตอรล์ fontStyle เปนป็ String ดงข ต่อช ไปนัรขี้
'italic', 'normal' หรรอ null (รรเี ซต็ก การเอรียง)
setFontStyles(fontStyles) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setfontstylesfontstyles
เหมอร นกบข setFontStyle() เพีรยงแต่ชสามารถกาก หนดใหแ้ช ตลช่ ะเซลลลใ์ นเรช้นจลม์ รีการเอรียงของฟอนตท์ล รี่ทแตกตาช่ ง
กนข ได้ช โดยพารามิเล ตอรล์ fontStyles เปนป็ คาช่ การเอรียงในอาเรย์ล 2 มติล ิล ท่ีทรจะตอช้ งแมทกขบมลติ ขิล องเร้นช จล์
ตวข อยา่ช ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var cell = sheet.getRange("B2") ;
cell.setFontStyle("italic") ;
ตวข อยา่ช ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var fontStyles = [ ["italic", "normal"] ] ; // มดิติด 1x2
var range = sheet.getRange("B2:C2") ; // มดิตดิ 1x2
range.setFontStyles(fontStyles) ;
8.4.จ.) setFontColor() และ
setFontColor(color) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setfontcolorcolor
ใชก้ช าก หนดสรีใหชก้ บข ฟอนต์ล โดยพารามิลเตอร์ล color เปน็ป โคชด้ สรใี นสญข ลกข ษณ์ล CSS เชน่ช '#ffffff' หรรอ 'white'
setFontColors(colors) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setfontcolorscolors
เหมอร นกบข setFontColor() เพียร งแตสช่ ามารถกกาหนดสใรี หชก้ บข ฟอนต์ใล นแต่ลช ะเซลล์ลในเรน้ช จล์ แตกตช่างกนข ไดช้
โดยพารามลเิ ตอรล์ colors เปป็นคชา่ สีรในอาเรย์ล 2 มลิติล ทีร่จท ะตช้องแมทกบข มลิตลิของเร้ชนจ์ล
ตวข อยา่ช ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var cell = sheet.getRange("B2") ;
cell.setFontColor("red") ;
80 เซอรวร์ วิส Spreadsheet
ตวข อย่ชาง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var colors = [
["red", "white", "blue" ] ,
["#FF0000", "#FFFFFF", "#0000FF" ]
];
var cell = sheet.getRange("B5:D6") ;
cell.setFontColors(colors) ;
8.4.ฉ.) setHorizontalAlignment()
setHorizontalAlignment(alignment) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#sethorizontalalignmentalignment
ใช้ชกกาหนดการวางแนวขช้อความในแนวราบ หรรอ การจดข ชดิล ซ้าช ย-ขวา-เขช้ากลาง โดยพารามลิเตอร์ล
alignment เปน็ป String ดงข ตอ่ช ไปนีัรข้ 'left', 'center', 'normal' หรอร null (รเีร ซต็ก แนวการวาง)
setHorizontalAlignments(alignments) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#sethorizontalalignmentsalignments
เหมรอนกบข setHorizontalAlignment() เพีรยงแตช่สามารถกาก หนดใหชแ้ ตล่ช ะเซลล์ลในเรช้นจ์มล ีรการวางแนว
ขอช้ ความ ทรที่แตกต่ชางกนข ได้ช โดยพารามลิเตอรล์ alignments เป็ปนคช่าการวางแนวในอาเรยล์ 2 มตลิ ลิ ททรี่จะตอช้ งแมทกขบมิตล ิล
ของเรน้ช จ์ล
ตวข อยช่าง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var cell = sheet.getRange("B2") ;
cell.setHorizontalAlignment("center") ;
ตวข อยช่าง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var horizontalAlignments = [ [ "left", "right", "center" ] ] ; // 1x3
var range = sheet.getRange("B2:D2") ; // 1x3
range.setHorizontalAlignments(horizontalAlignments) ;
8.4.ช.) setVerticalAlignment()
setVerticalAlignment(alignment) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setverticalalignmentalignment
ใชช้กาก หนดการวางแนวขอช้ ความในแนวด่งลทิี หรรอ การจขดชดลิ บน-กลาง-ลา่ช ง โดยพารามิเล ตอร์ล alignment
เปน็ป String ดงข ตชอ่ ไปนข้ัรี 'top', 'middle', 'bottom' หรรอ null (รเรี ซก็ตแนวการวาง)
โดย วสนสั ตต์ คณคุ ดดลิ กเศวต ([email protected]) 81
setVerticalAlignments(alignments) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setverticalalignmentsalignments
เหมรอนกบข setVerticalAlignment() เพยีร งแต่สช ามารถกาก หนดให้แช ตล่ช ะเซลล์ลในเร้ชนจล์มรีการวางแนว
ขอช้ ความแนวด่ิทีลง ทีร่แท ตกตาช่ งกขนได้ช โดยพารามิเล ตอร์ล alignments เปปน็ คา่ช การวางแนวแนวดลง่ีิท ในอาเรยล์ 2 มิตล ิล ทีทร่จะ
ตชอ้ งแมทกบข มลิตลิของเรช้นจ์ล
ตวข อยาช่ ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var cell = sheet.getRange("B2") ;
cell.setVerticalAlignment("middle") ;
ตวข อยา่ช ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var alignments = [ [ "top", "middle", "bottom" ] ] ;
var range = sheet.getRange("B2:D2") ;
range.setVerticalAlignments(alignments) ;
8.4.ซ.) setFontLine(fontLine)
setFontLine(fontLine) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setfontlinefontline
ใชกช้ กาหนดการขดีร เส้นช ใหกช้ ขบขอ้ช ความ โดยพารามเิล ตอร์ล fontLine เปนป็ String ดงข ตช่อไปนรัขี้
'underline', 'line-through', 'none' หรรอ null (รเีร ซ็กตการขรีดเสนช้ )
setFontLines(fontLines) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#setfontlinesfontlines
เหมอร นกบข setFontLine() เพยีร งแตชส่ ามารถกกาหนดให้ชแตช่ละเซลลใล์ นเร้ชนจล์ มีกร ารขรดี เส้นช ทีท่รแตกตา่ช งกขนไดช้
โดยพารามเลิ ตอร์ล fontLines เปน็ป คชา่ การขีดร เส้ชนในอาเรยล์ 2 มตลิ ลิ ทรีจ่ท ะตชอ้ งแมทกบข มลติ ลขิ องเร้นช จล์
ตวข อยา่ช ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var cell = sheet.getRange("B2") ;
cell.setFontLine("line-through") ;
ตวข อยาช่ ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var fontLines = [ [ "underline", "line-through", "none" ] ] ;
var range = sheet.getRange("B2:D2") ;
range.setFontLines(fontLines) ;
82 เซอรร์วิสว Spreadsheet
8.5. ตบวั อย่าต งการกนาหนดรสปู แบบหลายอย่ตางใหชก้ บับ เรนช้ จร์
โคด้ช
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getActiveRangeList()
.setFontFamily('Sarabun')
.setFontSize(12)
.setFontColor("White")
.setHorizontalAlignment('center')
.setFontWeight('bold')
.setVerticalAlignment('middle')
.setBackground(SpreadsheetApp.ThemeColorType.ACCENT1) ;
ผล – ก่อช นรขนโคช้ด ให้ชเลรอกเรช้นจ์ลไวก้ช ชอ่ น เพราะการจขดรปูด แบบจากโคด้ช ขช้างต้ชน มีรผลเฉพาะเร้นช จ์ทล ถ่ีทร ูกด เลอร ก
เท่าช นขั้น
ตวข อย่ชางทร่ีท 2 – จขบคช่ารูปด แบบตาช่ งๆของเร้นช ตล์มา Logs ดูด
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var aSheet = ss.getActiveSheet() ;
var aRange = aSheet.getActiveRange() ;
var aValues = aRange.getValues() ;
var aFontColor = aSheet.getRange(1,1,2,2).getFontColors() ;
// [[#000000, #000000], [#000000, #000000]]
var aFontFamilies = aSheet.getRange(1,1,2,2).getFontFamilies() ;
// [[Sarabun, Sarabun], [Sarabun, Arial]]
Logger.log(aFontColor) ;
Logger.log(aFontFamilies) ;
โดย วสสนั ต์ต คณคุ ดลิด กเศวต ([email protected]) 83
8.6. Text wrapping
Text wrapping หรรอ การห่อต ขช้อความ ใชก้ช รณทรี ่ีขทร ้อช ความมรคี วามยาว เกินล ความกวาช้ งของเซลล์ล
Text wrapping หากกาก หนดเอง สามารถทาก ได้ชโดยใช้ปช มุ่ปช Text wrapping บนแถบเครอ่รที งมรอ ตวข อยา่ช ง
ตามภาพ
8.6.ก.) getWrapStrategy() และ getWrapStrategies()
getWrapStrategy() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#getwrapstrategy
ครนคา่ช เปป็น text wrapping strategy((วธิล กรี ารห่ชอขอ้ช ความ) ของเซลลทล์ มี่ทร ชมุ ซา้ช ยบนของเรน้ช จทล์ ีท่รจขบมา โดยจะ
ครนค่าช กลบข มาเปป็น Enum WrapStrategy (ดตูด าราง Enum WrapStrategy)
getWrapStrategies() - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#getwrapstrategies
คนร คา่ช เป็ปน Text wrapping strategies(วธลิ ีกร ารหช่อขอ้ช ความ) ของทุชกเซลลลใ์ นเรน้ช จล์ โดยจะคนร คชา่ กลบข มา
เปป็น Enum WrapStrategy[][] หรอร Enum WrapStrategies ท่ีรทเกบก็ ในอาเรยล์2 มตลิ ิล ( ดตดู าราง Enum
WrapStrategy )
ตวข อยา่ช ง
// จบสั คต่า Text wrapping strategy ของ B1 ออกมา Logs ดย
var sheet = SpreadsheetApp.getActiveSheet() ;
var range = sheet.getRange("B1:D4") ;
Logger.log(range.getWrapStrategy()) ;
8.6.ข.) Enum WrapStrategy
Enum WrapStrategy
https://developers.google.com/apps-script/reference/spreadsheet/wrap-strategy
Property Type Description
WRAP Enum ขค้อความทย่ืชท าวเกิดนความกวค้างของเซลล์ต จะถกย ตดสั ขีชึถ้นบรรทสดั ใหมต่อสัตโนมัตส ิด
ขอ้ค ความท่ยทชื าวเกนิด ความกวา้ค งของเซลลต์ จะแสดงทะลุคไปยัสงเซลล์ตถัดส ไป หากเซลล์ต
OVERFLOW Enum ถดสั ไปไมม่ต ขท ้อค มยลใดๆ แต่ถต ค้าเซลลถต์ ัสดไปมทข้คอมยลอย่ตย ขค้อความจะถกย ตดัส ให้คแสดง
เฉพาะสตว่ นทอ่ทืช ยใ่ตย นความกวาค้ งของเซลลตเ์ ทา่ต นนัส้ีช
CLIP Enum ขค้อความจะถยกตดสั ใหแค้ สดงเฉพาะส่ตวนทชืทอ่ ยใตย่ นความกวคา้ งของเซลลตเ์ ทา่ต นนส้ีัช
84 เซอรรว์ ิสว Spreadsheet
8.6.ค.) setWrapStrategy() และ setWrapStrategies()
setWrapStrategy(strategy)
https://developers.google.com/apps-script/reference/spreadsheet/range#setwrapstrategystrategy
ใชเ้ช ซต็ก Text wrapping strategy ใหก้ช บข ทกชุ เซลลใล์ นเรน้ช จล์ พารามเิล ตอรล์ strategy กคก็ รอ Enum
WrapStrategy
setWrapStrategies()
https://developers.google.com/apps-script/reference/spreadsheet/range#setwrapstrategiesstrategies
ตวข อยช่าง
// กจาหนด Wrap strategy แบบ CLIP ให้คกบสั ทกุค เซลล์ตในเรค้นจต์ B2:D4
var sheet = SpreadsheetApp.getActiveSheet() ;
var range = sheet.getRange("B2:D4") ;
range.setWrapStrategy(SpreadsheetApp.WrapStrategy.CLIP) ;
ตวข อย่ชาง
// กอ๊อ ปปป้ี Wrap strategy จากเร้คนจ์ต A1:B2 ไปให้กค บสั เรค้นจ์ต C5:D6
var sheet = SpreadsheetApp.getActiveSheet() ;
var range1 = sheet.getRange("A1:B2") ;
var range2 = sheet.getRange("C5:D6") ;
range2.setWrapStrategies(range1.getWrapStrategies()) ;
8.6.ง.) setWrap(isWrapEnabled) และ setWraps(isWrapEnabled)
setWrap(isWrapEnabled)
https://developers.google.com/apps-script/reference/spreadsheet/range#setwrapiswrapenabled
เซก็ต Cell wrap ใหชก้ ขบเร้นช จทล์ ่ีทรระบชุ ถ้าช เปปดิ (Enabled เปปน็ คท่า Default) เซลลจล์ ะปรบข ขนาดให้ชเหก็นเนัขร้อหาใน
เซลลล์ทัข้งหมด แต่ชถช้า ปปิด(Disabled) ก็กจะแสดงใหช้มากทีท่รสุชด โดยไมช่ปรขบขนาดโดยการขขึท้ันบรรทขดใหมช่หลาย
บรรทดข พารามิลเตอร์ล isWrapEnabled เปน็ป บลูด ลีรนกาก หนดใหช้ Enabled หรรอ Disabled
setWraps(isWrapEnabled)
https://developers.google.com/apps-script/reference/spreadsheet/range#setwrapstrategiesstrategies
Sets a rectangular grid of word wrap policies (must match dimensions of this range). Cells
with wrap enabled (the default) resize to display their full content. Cells with wrap disabled display
as much as possible in the cell without resizing or running to multiple lines.
ตวข อยา่ช ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
var cell = sheet.getRange("B2") ;
cell.setWrap(true) ;
โดย วสสันต์ต คุณค ดิดลกเศวต ([email protected]) 85
ตวข อยาช่ ง
var ss = SpreadsheetApp.getActiveSpreadsheet() ;
var sheet = ss.getSheets()[0] ;
// The size of the two-dimensional array must match the size of the range.
var wraps = [
[ true, true, false ]
];
var range = sheet.getRange("B2:D2") ;
range.setWraps(wraps) ;
8.7. Text Style
8.7.ก.) newTextStyle() และ setTextStyle()
คลาส TextStyle
https://developers.google.com/apps-script/reference/spreadsheet/text-style
ใชรช้ ะบายสไตล์ใล หช้กขบขช้อความในเซลลล์
newTextStyle() – เมถอดในคลาส SpreadsheeetApp
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#newtextstyle
ใชส้ช ร้าช ง ตวข สรา้ช งรปดู แบบข้ชอความ(Text Style) ซึที่งเปปน็ ตวข กาก หนดรูดปแบบขอช้ ความ เช่ชน ตวข หนา ขนาด
ฟอนตล์ เปป็นต้นช โดยจะครนคาช่ กลบข มาเป็ปนวตข ถชุ RichTextValueBuilder
build() - เมถอดในคลาส TextStyleBuilder
ใชสช้ ราช้ งรูดปแบบขอ้ช ความจากตวข สรา้ช ง
newTextStyle() และ build() ใชคช้ ่ชูดกบข เรทิีมล่ ต้นช สรช้างรปดู แบบข้อช ความดช้วยเมถอด newTextStyle() จบดว้ช ย
เมถอด build() เพรีอท่ สรา้ช งรดปู แบบข้อช ความทพรีท่ ร้อช มนกาไป กาก หนดใหก้ช บข เรช้นจ์ล
setTextStyle(style) – เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#settextstylestyle
ใชช้กาก หนดสไตลล์ให้ชกบข ขช้อความ ในเรช้นจ์ลที่รทร ะบุช พารามลิเตอร์ล style กก็ครอ วขตถชุ TextStyle โดยครนคา่ช กลขบมา
เป็ปนวขตถุช Range
setTextStyles(styles) – เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#settextstylesstyles
ใชก้ช าก หนดสไตลใล์ ห้ชกบข ขอ้ช ความ ในเรน้ช จล์ทรรท่ี ะบุช โดยจะแมทตามกริลดของเรช้นจล์
86 เซอรร์วิสว Spreadsheet
ตวข อยา่ช งท่ีรท 1 : การใช้ชงาน setTextStyle()
// Sets the cells in range C5:D6 to have underlined size 15 font.
var sheet = SpreadsheetApp.getActiveSheet() ;
var range = sheet.getRange("C5:D6") ;
var style = SpreadsheetApp.newTextStyle()
.setFontSize(15)
.setUnderline(true)
.build() ;
range.setTextStyle(style) ;
ตวข อยช่างที่รท 2 : การใช้งช าน setTextStyles()
// Sets text styles for cells in range A1:B2
var sheet = SpreadsheetApp.getActiveSheet() ;
var range = sheet.getRange("A1:B2") ; // เร้คนจตข์ นาด 2x2
var bold = SpreadsheetApp.newTextStyle()
.setBold(true)
.build() ;
var otherStyle = SpreadsheetApp.newTextStyle()
.setBold(true)
.setUnderline(true)
.setItalic(true)
.setForegroundColor("#335522")
.setFontSize(44)
.build() ;
range.setTextStyles([[bold, otherStyle], [otherStyle, bold]]) ; // Text Style ขนาด 2x2
8.7.ข.) เมถอดท่ีทใชช้กาก หนดรูปด แบบของข้อช ความ
คลาส TextStyleBuilder
https://developers.google.com/apps-script/reference/charts/text-style-builder
setBold(bold) - เมถอดในคลาส TextStyleBuilder
https://developers.google.com/apps-script/reference/spreadsheet/text-style-builder#setboldbold
พารามเิล ตอรล์ bold เป็นป บูลด ลีรน
setUnderline(underline) - เมถอดในคลาส TextStyleBuilder
https://developers.google.com/apps-script/reference/spreadsheet/text-style-builder#setunderlineunderline
พารามเิล ตอรล์ underline เปป็น บลูด ลีนร
setItalic(italic) - เมถอดในคลาส TextStyleBuilder
https://developers.google.com/apps-script/reference/spreadsheet/text-style-builder#setitalicitalic
พารามลิเตอรล์ italic เป็นป บลูด ลีรน
โดย วสสันตต์ คุคณดดลิ กเศวต ([email protected]) 87
setForegroundColor(cssString) - เมถอดในคลาส TextStyleBuilder
https://developers.google.com/apps-script/reference/spreadsheet/text-style-builder#setforegroundcolorcssstring
ใชก้ช าก หนดสใรี ห้กช บข ฟอนตล์ พารามลิเตอร์ล cssString เป็นป คา่ช สใรี นสขญลขกษณ์ล CSS เช่ชน "#ffffff" หรรอ "White"
เป็นป ตช้น
setForegroundColorObject(color)
https://developers.google.com/apps-script/reference/spreadsheet/text-style-builder#setforegroundcolorobjectcolor
ใชกช้ กาหนดสใีร หกช้ บข ฟอนต์ล พารามิลเตอร์ล color เปน็ป วขตถุช Color
setFontSize(fontSize) - เมถอดในคลาส TextStyleBuilder
https://developers.google.com/apps-script/reference/spreadsheet/text-style-builder#setfontsizefontsize
พารามเลิ ตอรล์ fontSize เปปน็ เลขจกานวนเต็กมขนาดของฟอนตล์
setFontFamily(fontFamily) - เมถอดในคลาส TextStyleBuilder
https://developers.google.com/apps-script/reference/spreadsheet/text-style-builder#setfontfamilyfontfamily
พารามลิเตอร์ล fontFamily เป็ปนช่ีรทอฟอนต์ล เชนช่ Arial
setStrikethrough(strikethrough)
https://developers.google.com/apps-script/reference/spreadsheet/text-style-builder#setstrikethroughstrikethrough
พารามเลิ ตอร์ล strikethrough เปปน็ บลดู ลีนร วา่ช จะขีรดเสช้นคาดกลางข้อช ความหรรอไม่ช
8.8. Rich Text Value
Rich Text Value หรรอ ขอช้ ความทีทรม่ กีร ารจขดรูปด แบบททรต่ี ่ชางกขนภายในเซลล์ล
คลาส RichTextValue
https://developers.google.com/apps-script/reference/spreadsheet/rich-text-value
ขช้อความบางส่ชวนในเซลลล์สามารถมรีรูปด แบบท่ีทรแตกตาช่ งได้ช
รนร (ศพข ท์ลเฉพาะ) กกค็ รอ ความยาวมากสดุช ทีรอ่ท ขกษรททรี่เป็ปนส่ชวนหนทีึ่งของข้ชอความมรีรูดปแบบเดีรยวกขน ตขวอย่ชาง
"This kid has two apples." (สขงเกตุชการจขดรดูปแบบทรี่ทต่ชางกขน) มรี 4 รขนก็กครอ ["This ", "kid ", "has two ",
"apples."]
คลาส RichTextValueBuilder
https://developers.google.com/apps-script/reference/spreadsheet/rich-text-value-builder
ตวข สรชา้ ง Rich Text values
build() – เมถอดในคลาส RichTextValueBuilder
https://developers.google.com/apps-script/reference/spreadsheet/rich-text-value-builder#build
ใชส้ช รา้ช ง Rich Text values จากตขวสราช้ ง Rich Text values
setText(text) – เมถอดในคลาส RichTextValueBuilder
https://developers.google.com/apps-script/reference/spreadsheet/rich-text-value-builder#settexttext
ใชก้ช าก หนดขอช้ ความ และล้าช งข้อช ความเดลิมออกไป เมี่อทร สรา้ช ง Rich Text values โดยเมถอดนั้ขีรควรถดกู เรีรยกใช้ช
กอช่ นเมถอด setTextStyle(startOffset, endOffset, textStyle)
setTextStyle(textStyle) – เมถอดในคลาส RichTextValueBuilder
https://developers.google.com/apps-script/reference/spreadsheet/rich-text-value-builder#settextstyletextstyle
ใชกช้ าก หนด Text Style ใหช้กขบทง้ขั Value
88 เซอรว์ร ิวส Spreadsheet
setTextStyle(startOffset, endOffset, textStyle) – เมถอดในคลาส RichTextValueBuilder
https://developers.google.com/apps-script/reference/spreadsheet/rich-text-value-builder#settextstylestartoffset,-endoffset,-textstyle
ใชช้กาก หนด Text Style ใหช้กขบบางสช่วนของขช้อความ โดยกกาหนดระยะเร่ีทิลมต้ชนและจบไดช้ โดยอขกษรตขวแรก
เรทีม่ลิ จาก 0
พารามลเิ ตอรล์
Name Type Description
startOffset Integer The start offset for the substring, inclusive.
endOffset Integer The end offset for the substring, exclusive.
textStyle TextStyle The text style being set.
ตวข อยาช่ ง
// Creates a Rich Text value for the text "HelloWorld"
// with "Hello" bolded and italicized, and "World" only italicized.
var ฺBOLD = SpreadsheetApp.newTextStyle().setBold(true).build() ;
var ITALIC = SpreadsheetApp.newTextStyle().setItalic(true).build() ;
var value = SpreadsheetApp.newRichTextValue() // สไตลท์ต ่ืชท 1
.setText("HelloWorld") // สไตลตท์ ชื่ท 2
.setTextStyle(0, 5, BOLD)
.setTextStyle(ITALIC)
.build() ;
ตวข อย่าช ง
// Creates a Rich Text value for the text "HelloWorld",
// with "Hello" bolded, and "World" italicized.
var BOLD = SpreadsheetApp.newTextStyle().setBold(true).build() ;
var ITALIC = SpreadsheetApp.newTextStyle().setItalic(true).build() ;
var value = SpreadsheetApp.newRichTextValue()
.setText("HelloWorld")
.setTextStyle(0, 5, BOLD)
.setTextStyle(5, 10, ITALIC)
.build() ;
โดย วสสันต์ต คุณค ดิดลกเศวต ([email protected]) 89
90 เซอร์วร วิส Spreadsheet
บททที่ 9
การก๊กอปปป
9.1. copyTo() คลาส Range
copyTo() – เปน็ป Method ในหลายคลาส ใชกค้ ออ๊ ปป้ปีข้คอมลย
copyTo(spreadsheet) - เมถอดในคลาส Sheet
https://developers.google.com/apps-script/reference/spreadsheet/sheet#copytospreadsheet
copyTo(destination) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#copytodestination
(กรณอีร ยดูช่ในคลาส Range) ใชก้ช กอ๊ ปปขป้ี ้ชอมดูลจากเรชน้ จล์หนทง่ึี ไปยขงอกรี เรนช้ จห์ล นทึง่ี
9.1.ก.) copyTo(destination)
copyTo(destination) - destination กคก็ อร เร้ชนจปล์ ลายทาง
https://developers.google.com/apps-script/reference/spreadsheet/range#copytodestination
Copy data to cell range
https://developers.google.com/google-ads/scripts/docs/examples/spreadsheetapp#copy-data-to-cell-range
ตวข อยาช่ ง
function copyData() {
var ssID = '1cj0tusfCCq2bAkXqLYTCjowhOlMbVPWpnfL6qEZv16w';
var s1Name = 'Sheet1' ;
var s2Name = 'Sheet2' ;
var ss = SpreadsheetApp.openById(ssID);
var sheet1 = ss.getSheetByName(s1Name);
var sheet2 = ss.getSheetByName(s2Name);
var rangeToCopy = sheet.getRange(1, 1, sheet.getMaxRows(), 3);
// A1:C3 –----> E1:G3
rangeToCopy.copyTo(sheet.getRange(1, 5));
}
ผล - ขชอ้ มูดลจากเซลล์ล A1:C3 ถกูด ก๊อก ปปไ้ีป ปยขงเซลลล์ E1:G3
92 เซอร์รวสวิ Spreadsheet
9.1.ข.) copyTo(destination, options)
copyTo(destination, options)
https://developers.google.com/apps-script/reference/spreadsheet/range#copytodestination,-options
copyTo() โดยปกตจิล ะกก๊อปปปี้ทังข้ ค่าช และรดูปแบบ แต่ชเราสามารถเลรอกได้ช
Name Type Description
destination Range A destination range to copy to; only the top-left cell position is relevant.
options Object A JavaScript object that specifies advanced parameters, as listed below.
options เปป็นตขววขตถุช มรีชีท่รอ Key(หรรอ Properties) ตามตารางดขงน้ัีรข ใช้ชเลรอกเฉพาะรดูปแบบหรรอเนัรข้อหาใน
การกอ๊ก ปปีป้
Name Type Description
formatOnly Boolean designates that only the format should be copied
contentsOnly Boolean designates that only the content should be copied
ตวร อยต่าง – เมรท่อี รขนโค้ชดข้ชอมดูลในชรั้ีขท Sheet1 คอลขมน์ล A:E ทุกช แถว จะถกูด กอ๊ก ปไปวางโดยเรทิล่ีมต้ชนทีร่ทเซลลล์ F1
และกกอ๊ ปมาเฉพาะขช้อมดูลไมช่รวมรปูด แบบ
function copyData() {
var ssID = 'Spreadsheet Id' ;
var sName = 'Sheet1' ;
var ss = SpreadsheetApp.openById(ssID) ;
var sheet = ss.getSheetByName(sName) ;
sheet.getRange("A:E")
.copyTo( sheet.getRange("F1"), { contentsOnly:true }) ;
// Range Options
}
ผล
โดย วสนัส ตต์ คคุณดดลิ กเศวต ([email protected]) 93
9.1.ค.) copyTo(destination, copyPasteType, transposed)
copyTo(destination, copyPasteType, transposed)
https://developers.google.com/apps-script/reference/spreadsheet/range#copytodestination,-copypastetype,-transposed
พารามเม ตอร์พ
Name Type Description
destination Range
A destination range to copy to; only the top-left
copyPasteType CopyPasteType cell position is relevant.
transposed Boolean A type that specifies how the range contents are
pasted to the destination.
( ดูดตาราง Enum CopyPasteType )
Whether the range should be pasted in its
transposed orientation.
Enum CopyPasteType
https://developers.google.com/apps-script/reference/spreadsheet/copy-paste-type.html
Property Type Description
PASTE_NORMAL Enum Paste values, formulas, formats and merges.
PASTE_NO_BORDERS Enum Paste values, formulas, formats and merges but without borders.
PASTE_FORMAT Enum Paste the format and data validation only.
PASTE_FORMULA Enum Paste the formulas only.
PASTE_DATA_VALIDATION Enum Paste the data validation only.
PASTE_VALUES Enum Paste the values ONLY without formats, formulas or merges.
Enum Paste the color rules only.
PASTE_CONDITIONAL_FORMATTING Enum Paste the column widths only.
PASTE_COLUMN_WIDTHS
ตวข อยา่ช ง – เม่รีทอรขนโค้ชดขช้อมูดลในชทร้ัีข Sheet1 คอลขมนล์ A:E ทกชุ แถว จะถดกู ก๊อก ปไปวางโดยเรล่มีทิ ตชน้ ทีรท่เซลล์ล F1
function copyData() {
var ssID = 'Spreadsheet Id' ;
var sName = 'Sheet1' ;
var ss = SpreadsheetApp.openById(ssID) ;
var sheet1 = ss.getSheetByName(sName) ;
sheet.getRange("A:E")
.copyTo(
sheet.getRange("F1") ,
spreadsheetApp.CopyPasteType.PASTE_VALUES
);
}
94 เซอรรว์ วิส Spreadsheet
ผล
9.2. กกอ๊ ปป้รีป สูปแบบไปทที่รเรน้ช จ์ร
9.2.ก.) copyFormatToRange()
Copy formatting to cell range
https://developers.google.com/google-ads/scripts/docs/examples/spreadsheetapp#copy-formatting-to-cell-range
Get the last cell on a spreadsheet in which data is present
https://developers.google.com/google-ads/scripts/docs/examples/spreadsheetapp#get-the-last-cell-on-a-spreadsheet-in-which-data-is-present
copyFormatToRange(sheet, column, columnEnd, row, rowEnd)
https://developers.google.com/apps-script/reference/spreadsheet/range#copyformattorangesheet,-column,-columnend,-row,-rowend
ใช้ชก๊อก ปปีปร้ ูปด แบบจากเรช้นจ์ตล ช้นทาง ไปยขงปลายทาง ถา้ช ปลายทางเล็กกหรรอใหญกช่ วช่าต้ชนทาง จะซ้ักาข การวางใหช้
จนเตม็ก
Name Type Description
sheet Sheet The target sheet.
column Integer The first column of the target range.
columnEnd Integer The end column of the target range.
row Integer The start row of the target range.
rowEnd Integer The end row of the target range.
ตวข อยชา่ ง
function copyFormatToRange() {
var ssID = 'Spreadsheet Id' ;
var ss = SpreadsheetApp.openById(ssID) ;
var ssName = 'Sheet1' ;
var dsName = 'Sheet2' ;
var sSheet = ss.getSheetByName(ssName) ;
var dSheet = ss.getSheetByName(dsName) ;
var sRange = sSheet.getRange('B2:D4');
sRange.copyFormatToRange(dSheet, 4, 6, 4, 6) ;
}
เรชน้ จล์ตน้ช ทาง B2:D4 อยใ่ชดู นชรีท้ขั Sheet1
โดย วสสันต์ต คคุณดดิลกเศวต ([email protected]) 95
หลขงรนข โคด้ช ตกาแหน่ชงปลายทางททีร่อยใชดู่ นชขัทีร้ Sheet2 รปูด แบบเปลรี่ทยนไปตามภาพ
9.3. ก๊อก ปปปี้ไฟล์ร Google Sheets ดว้ช ย copy()
9.3.ก.) copy()
Make a copy of a spreadsheet
https://developers.google.com/google-ads/scripts/docs/examples/spreadsheetapp#make-a-copy-of-a-spreadsheet
copy(name)
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#copyname
ใชกช้ ๊กอปปีปไ้ ฟล์ล Google Sheets คนร ค่ชากลบข มาเป็นป ไฟล์ลทรีทถ่ ูกด ก๊อก ปปป้ี พารามิลเตอรล์ name ครอช่ีทรอของไฟลใ์ล หมช่
function copyASpreadsheet() {
var ssID = 'Spreadsheet Id' ;
var ss = SpreadsheetApp.openById(ssID) ;
var newSS = ss.copy('Copy of ' + ss.getName()) ;
Logger.log('New spreadsheet ID : %s.', newSS.getId()) ;
}
96 เซอรวร์ วสิ Spreadsheet
ผล – หลงข รนข โคด้ช ไฟล์ล Google Sheets จะถกูด กอ๊ก ปป้ีไป ปไวช้ททีร่หน้ชาแรก Drive และถชา้ ดดูทที่ร Log จะได้ผช ลดงข ต่อช
ไปนีรขั้
Logs
[ ] New spreadsheet ID : 1UD3DT9iENoK56tWJrqwe0Di-kxvYxkujwXXXXXXXXXX.
โดย วสัสนต์ต คุณค ดิลด กเศวต ([email protected]) 97
98 เซอร์วร วิส Spreadsheet
บททที่ 10
Banding หรรือ
Alternating Colors
10.1. applyRowBanding()
คลาส Banding
https://developers.google.com/apps-script/reference/spreadsheet/banding
ใช้ชเข้าช ถึงท และแกไ้ช ข Banding (Alternating colors)
applyRowBanding(bandingTheme, showHeader, showFooter) - เมถอดในคลาส Range
https://developers.google.com/apps-script/reference/spreadsheet/range#applyrowbandingbandingtheme,-showheader,-showfooter
applyRowBanding() ใชใช้ สช่ Alternating Colors ใหก้ช บข เรช้นจ์ล โดยครนคาช่ กลบข มาเปนป็ วตข ถุช Banding
พารามลเิ ตอร์ล
Name Type Description
bandingTheme BandingTheme ธมท ของ Alternating colors ( ดตย าราง Enum BandingTheme )
showHeader Boolean บลย ลนท ทืชท่กาจ หนดการแสดงส่ตวนหัวส ของ Alternating colors
showFooter Boolean บลย ลทน ทกืทช่ จาหนดการแสดงส่ตวนท้คายของ Alternating colors
Enum BandingTheme
https://developers.google.com/apps-script/reference/spreadsheet/banding-theme.html
การเลือม กธทมใหพค้ มิด พ์ต SpreadsheetApp.BandingTheme.(Property ตามตาราง)
Property Type Description
LIGHT_GREY Enum A light grey banding theme.
CYAN Enum A cyan banding theme.
GREEN Enum A green banding theme.
YELLOW Enum A yellow banding theme.
ORANGE Enum An orange banding theme.
BLUE Enum A blue banding theme.
TEAL Enum A teal banding theme.
GREY Enum A grey banding theme.
BROWN Enum A brown banding theme.
LIGHT_GREEN Enum A light green banding theme.
INDIGO Enum An indigo banding theme.
PINK Enum A pink banding theme.
ตวข อยา่ช ง
var ss = SpreadsheetApp.getActive() ; // จบสั ขคอ้ มยลใน sheet1 ท้งชีสั หมด
var sheet1 = ss.getSheetByName('Sheet1') ;
var lastRow = sheet1.getLastRow() ;
var lastColumn = sheet1.getLastColumn() ;
var dataRange = sheet1.getDataRange() ;
dataRange.clearFormat() ; // ลคา้ งรปย แบบเก่ตาท้งดิชี ไปกอ่ต น
// ใส่ต Alternateing Colors
dataRange.applyRowBanding(SpreadsheetApp.BandingTheme.GREEN,true,true) ;
// จดัส รยปแบบตัวส เลขใหก้ค สับคอลัมส นต์สดุค ทาค้ ย
sheet1.getRange(2,lastColumn,lastRow-1,1).setNumberFormat("#,##0.00 \บาท") ;
// แถวสุคดทคา้ ยตสวั หนา
sheet1.getRange(lastRow,1,1,lastColumn).setFontWeight("Bold") ;
100 เซอรร์วิสว Spreadsheet