เริ่มแรกเลยทุก Sheets ที่เราเปิดอยู่เราสามารถเริ่มเขียนโปรแกรมได้เลยโดยการกด Tools > Script editor มันจะเปิด Tab ใหม่ขึ้นมาแล้วเราก็เริ่มเขียน Code ได้เลย มันจะมีชื่อไฟล์ 1 ไฟล์ แล้วมี Function มาให้ เราก็ใส่ Code ไปได้เลย แล้วในหน้า Sheets ก็จะเรียกใช้งาน Function นี้ได้เลยเพราะมันผูกถึงกันระหว่าง Sheets กับ Script
ตัวอย่าง1 ให้ Cell เรียกใช้งาน Function เหมือน Function อื่นๆตามปกติในหน้า Sheets เริ่มจากให้ Function มัน return ค่าอะไรก็ได้ กด Save แล้วกลับไปที่ Tab Spreadsheet เลือกมาสัก Cell แล้วเรียกใช้ Function ตามชื่อ Function ของเราเช่น =myFunction() กด Enter มันจะได้ผลตามค่าที่เรา return แต่เวลาเราแก้ Code แล้วกลับไปเรียกใช้อีกครั้งมันจะไม่เปลี่ยนผล หาข้อมูลเจอว่ามันเกี่ยวกับ Cache อะไรสักอย่าง ต้องแก้โดยการส่ง Parameter ที่มีค่าไม่เหมือนเดิมเข้าไป
ไฟล์ Script นี้มันจะผูกไว้กับ Sheet ของเราเลย สามารถปิดไปได้ พอเปิดใหม่มันก็ยังอยู่เหมือนเดิม และบางครั้งจะมี Code บางอย่างที่เวลาจะรันมันจะขอ Permission ด้วย การรันเราก็สามารถกดรันจากในหน้า Script เลยก็ได้
ตัวอย่าง2 ไม่ต้องเรียกใช้งานโดย Cell แต่สั่งรัน Function ให้ทำงานเลยจากหน้า Script เช่นใส่ไปว่า Browser.msgBox(“Hello World!”);
และสามารถใช้วิธีนี้ในการเขียน Function เพื่อเพิ่ม Menu เพิ่มปุ่ม ใส่ในหน้า Sheets เพื่อที่เวลากดแล้วเรียกใช้ Function อื่นๆของเราได้เลย ทำให้เวลาเปิด Sheets มาเราก็เปิด Script มารัน Method เพิ่ม Menu ก่อน 1 ครั้ง หลังจากนั้นในหน้า Sheets ก็จะมี Menu ให้เรากดสั่งรัน Function ต่างๆที่เราผูกไว้ได้เลย
function addMenu() {
var ui = SpreadsheetApp.getUi();
ui.createMenu(‘MyMenu’)
.addItem(‘hello’, ‘sayhello’)
.addToUi();
}
function sayhello() {
Browser.msgBox(“Hello World!”);
}
คราวนี้มาถึงเรื่อง Google Script มันคือ Javascript + Function ต่างๆของ Google
เวลาเริ่มทำงานเราก็จะดึงข้อมูลมาจาก Sheets อันนี้ต้องใช้ Function ต่างๆของ Google เมื่อได้ข้อมูลมาแล้วเราก็เอามาใช้งานตามปกติด้วย Javascript จากที่ใช้งานมันรองรับ ES6(ECMAScript 6) เพราะสามารถใช้ Map กับ Set ได้ด้วย และเมื่อทำงานเสร็จจะส่งข้อมูลกลับไปที่ Sheets เราก็เรียกใช้งาน Function ต่างๆของ Google เหมือนเดิมเพื่อส่งข้อมูลกลับไปที่ Sheets
Code ในส่วนของ Google ก็เช่น การสร้าง Menu หรือการแสดง Message box ที่บอกไปแล้ว
ตัวอย่าง Code เพิ่มเติม การดึงข้อมูลมาจาก Sheets
var ss = SpreadsheetApp.getActiveSpreadsheet();//ไฟล์ Sheets ของเรา
var sheet = ss.getSheets()[0];//Sheets แรก
var values = sheet.getDataRange().getValues();//เอาข้อมูลมาทั้งหมด
จากนั้นก็ใช้ Javascript ในการทำงานกับข้อมูลตามปกติ
values.forEach(function(item) {
//ใช้งาน item[0] item[1] …
});
ตัวอย่างการเอาข้อมูลกลับไปใส่ Sheets
newSheet = ss.insertSheet();//สร้างขึ้นมาใหม่อีก 1 Sheets
newSheet.setName(“newsheet_2”);
newSheet.getRange(1, 1).setValue(“new Value”);//row 1, col 1
จบ.
เขียนโค้ดให้แสดงผลเต็มหน้าจอมือถืออย่างไรครับ
ขอบคุณครับ