13 ก.ย. 2023 เวลา 09:58 • ไอที & แก็ดเจ็ต

พื้นฐานการใช้ Apps Script ใน google sheet

วันนี้เราจะมาเรียนรู้พื้นฐานการเขียน apps script ใน google sheet กันนะครับ
รายละเอียด apps script ทั้งหมด สามารถศึกษาเองได้ที่ https://developers.google.com/apps-script
apps script จะเป็น script ที่สามารถใช้งานเชื่อมโยงกันบนแอพพลิเคชันของ google ทั้งหมด ได้แก่ drive docs form sheet slide gmail calendar และอื่น ๆ
ไฟล์ตัวอย่างที่จะใช้อธิบายในบทความนี้ สามารถทำสำเนาได้ที่ https://docs.google.com/spreadsheets/d/1vwPCyZn9XqbP2WmQg7G6WbN-8pn02pWpx_zB10zZ1lI/edit?usp=sharing
แต่ถ้าสามารถสร้างไฟล์ใหม่ แล้วเปิดหน้า apps script ได้เองเลย ก็จะดีกว่า
1) function
เริ่มต้น apps script จะมีฟังก์ชันที่สร้างรอเราไว้อยู่แล้ว
ภาพที่ 1
  • function คือ ไวยากรณ์เริ่มการสร้างฟังก์ชัน
  • myFunction คือ ชื่อฟังก์ชัน
  • () คือ ตัวแปรที่จะใส่ในฟังก์ชัน
  • {} คือ ตัวฟังก์ชัน
ที่ตัวฟังก์ชัน ให้ใส่
console.log('สวัสดีชาวโลก')
กดบันทึก และกด "เรียกใช้" จะมีหน้าต่างแสดงขึ้นมาว่า "สวัสดีชาวโลก"
ภาพที่ 2
ทีนี้ให้เราลองเปลี่ยน "console.log('สวัสดีชาวโลก')" ไปเป็น
return 'สวัสดีชาวโลก'
ภาพที่ 3
ทีนี้ที่หน้าชีตของเรา ลองใส่ฟังก์ชัน =myFunction() ดู ค่าในเซลล์จะกลายเป็น "สวัสดีชาวโลก" ตามที่เราสร้างฟังก์ชันไว้ หมายความว่า เราสามารถใช้ script สร้างฟังก์ชันของเราเองได้ด้วย
ภาพที่ 4
ทีนี้ให้เราสร้างฟังก์ชันใหม่
function function1(x) {
return 3 * x ** 2 - 2 * x + 4
}
ภาพที่ 5
จะเป็นฟังก์ชันที่มีตัวแปรคือ x และคืนค่า 3x² - 2x + 4
ในชีต ถ้าใส่สูตร =function1(3) ก็จะได้ค่าเป็น 25 กลับมา
ใน apps script ยกกำลังจะใช้ ** นะครับ ส่วน ^ จะเป็น XOR
ภาพที่ 6
2) การกำหนดตัวแปร
var คือ การกำหนดตัวแปรที่ใช้ได้ทั้งฟังก์ชัน
const คือ การกำหนดตัวแปรที่ไม่อนุญาตให้กำหนดค่าใหม่
let คือ การกำหนดตัวแปรที่ใช้ได้ใน { } นั้น ๆ
แต่หากอยากให้ตัวแปรใดใช้ได้กับทุกฟังก์ชัน ให้กำหนดไว้ภายนอกฟังก์ชัน
สร้างฟังก์ชันใหม่
function function2(){
var ss = SpreadsheetApp.getActive()
var sheet = ss.getActiveSheet()
console.log(sheet.getSheetName())
}
ภาษา apps script จะเขียนฟังก์ชันต่อ ๆ กันไปเรื่อย ๆ โดยใช้ . เป็นตัวเชื่อมฟังก์ชันที่อยู่ระดับต่ำกว่า
  • SpreadsheetApp คือ การเรียกใช้ apps script ของชีต
  • .getActive() คือ ไฟล์ชีตที่กำลังใช้งานอยู่
  • .getActiveSheet() คือ ชีตที่กำลังใช้งานอยู่
  • .getSheetName() คือ รับชื่อชีต
กดบันทึก เลือกฟังก์ชันให้เป็น function2 แล้วกดเรียกใช้ หน้าต่างจะแสดงชื่อชีตที่เรากำลังใช้อยู่
ภาพที่ 7
3) การเก็บค่าจากชีต
ให้เราพิมพ์ข้อมูลเพิ่มเข้าไปในช่วง "A3:B4" ดังภาพ
ภาพที่ 8
ทีนี้เราจะเก็บค่าจากเซลล์ A3 ให้เราปรับ function2 ให้เป็น
function function2(){
var ss = SpreadsheetApp.getActive()
var sheet = ss.getActiveSheet()
var value = sheet.getRange('A3').getValue()
console.log(value)
}
  • .getRange() คือ รับช่วงจากชีต
  • .getValue() คือ รับค่าในช่วง
เมื่อเรียกใช้ function2 ก็จะแสดงตัวแปร value ที่เราสั่งให้เก็บมาจาก A3
ภาพที่ 9
แต่ถ้าจะเก็บค่าทั้งช่วง A3:B4 จะใช้ .getValues() แทน
ภาพที่ 10
[ ] ก็คือ array อะไรที่อยู่ใน [ ] ก็คืออยู่ใน array เดียวกัน การขึ้น array ใหม่ก็เหมือนกับขึ้นบรรทัดใหม่
ดังนั้นการเขียน [ [ 1234, 5678 ], [ 'dog', 'cat' ] ] ในหน้าต่าง apps script นี้ก็จะเหมือนกับข้อมูลในช่วงเซลล์ A3:B4
4) การเติมค่าหรือสูตรในชีต
สร้างฟังก์ชันใหม่
function function3(){
var ss = SpreadsheetApp.getActive()
var sheet = ss.getActiveSheet()
var num1 = sheet.getRange('A3').getValue()
var num2 = sheet.getRange('B3').getValue()
sheet.getRange('C3').setValue(num1 + num2)
var word1 = sheet.getRange('A4').getValue()
var word2 = sheet.getRange('B4').getValue()
sheet.getRange('C4').setValue('I love ' + word1 + ' & ' + word2)
}
  • .setValue() คือ กรอกค่าในช่วง
บันทึกแล้วเรียกใช้ function3 แล้วในชีตที่เซลล์ C3 จะถูกใส่ค่าของ 1234 + 5678 เข้าไป ซึ่งแสดงค่าเป็นผลลัพธ์ที่เสร็จแล้ว
ในเซลล์ C4 ก็จะถูกใส่ข้อความ "I love dog & cat" เข้าไป
ภาพที่ 11 - 12
สร้างฟังก์ชันใหม่
function function4(){
var ss = SpreadsheetApp.getActive()
var sheet = ss.getActiveSheet()
sheet.getRange('C3').setFormula('=A3+B3')
sheet.getRange('C4').setFormula('="I love "&A4&" & "&B4')
}
  • .setFormula() คือ กรอกสูตรในช่วง
เมื่อบันทึกและกดเรียกใช้ function4 ในชีตที่ C3 และ C4 ก็จะถูกกรอกสูตรเข้าไปตามที่ script ดำเนินการ
ภาพที่ 13 - 14
อะไรก็ตามที่เราใช้มือทำในชีตได้ เราสามารถเขียนเป็นสคริปต์ได้ทั้งสิ้น เช่น ทำสำเนาชีต 10 ชุด แล้วเปลี่ยนชื่อชีตแต่ละชุดให้เป็น page01 ถึง page10 จากนั้นใส่สูตรที่ A1 ให้เป็นวันที่ 1 - 10 กันยายน
ดังนั้น งานอะไรที่ต้องทำซ้ำ ๆ เยอะ ๆ apps script จะช่วยเราได้มากเลย
หากเห็นว่าบทความนี้เป็นประโยชน์ กดไลค์กดแชร์เพื่อเป็นกำลังใจให้ผู้เขียนด้วยนะฮับ
โฆษณา