5 ฟังก์ชันสคริปต์ Google ชีตที่คุณต้องรู้

Google ชีต(Google Sheets)เป็นเครื่องมือสเปรดชีตบนระบบคลาวด์ที่มีประสิทธิภาพ ซึ่งช่วยให้คุณทำเกือบทุกอย่างที่คุณสามารถทำได้ในMicrosoft Excel (Microsoft Excel)แต่พลังที่แท้จริงของGoogle ชีต(Google Sheets)คือ คุณลักษณะ Google Scriptingที่มาพร้อมกับมัน

การเขียนสคริปต์ ของ Google Apps(Google Apps)เป็นเครื่องมือสร้างสคริปต์พื้นหลังที่ทำงานไม่เฉพาะใน Google ชีต(in Google Sheets)แต่ยังรวมถึง Google เอกสาร, Gmail, Google Analytics และ บริการระบบคลาวด์ อื่นๆ ของ Google(Google)แทบทุก บริการ ช่วยให้คุณสามารถทำให้แต่ละแอปเป็นแบบอัตโนมัติและรวมแต่ละแอปเหล่านั้นเข้าด้วยกัน

ในบทความนี้ คุณจะได้เรียนรู้วิธีเริ่มต้น ใช้งานสคริปต์ Google Appsการสร้างสคริปต์พื้นฐานในGoogle ชีต(Google Sheets)เพื่ออ่านและเขียนข้อมูลเซลล์ และฟังก์ชันขั้นสูงของสคริปต์Google ชีต ที่มีประสิทธิภาพสูงสุด(Google Sheets)

วิธีสร้างสคริปต์ Google Apps(How to Create a Google Apps Script)

คุณสามารถเริ่มต้นได้ทันทีโดยสร้างสคริปต์Google Apps ตัวแรกจากภายใน (Google Apps)Google ชี(Google Sheets)ต 

ในการดำเนินการนี้ ให้เลือกเครื่องมือ(Tools)จากเมนู จากนั้นเลือกScript Editor(Script Editor)

ซึ่งจะเปิดหน้าต่างตัวแก้ไขสคริปต์และตั้งค่าเริ่มต้นเป็นฟังก์ชันที่เรียกว่าmyfunction( ) ที่นี่คุณสามารถสร้างและทดสอบGoogle Script ของ คุณได้

ในการทดลองนี้ ให้ลองสร้าง ฟังก์ชันสคริปต์ ของ Google ชีต(Google Sheets)ที่จะอ่านข้อมูลจากเซลล์หนึ่ง คำนวณจากเซลล์นั้น และส่งออกปริมาณข้อมูลไปยังอีกเซลล์หนึ่ง

ฟังก์ชันเพื่อรับข้อมูลจากเซลล์คือฟังก์ชันgetRange()และgetValue() คุณสามารถระบุเซลล์ตามแถวและคอลัมน์ ดังนั้นหากคุณมีค่าในแถวที่ 2 และคอลัมน์ที่ 1 (คอลัมน์ A) ส่วนแรกของสคริปต์ของคุณจะมีลักษณะดังนี้:

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var row = 2;
   var col = 1;
   var data = sheet.getRange(row, col).getValue();
}

ซึ่งเก็บค่าจากเซลล์นั้นไว้ในตัวแปรข้อมูล (data)คุณสามารถคำนวณข้อมูล แล้วเขียนข้อมูลนั้นไปยังเซลล์อื่นได้ ดังนั้นส่วนสุดท้ายของฟังก์ชันนี้จะเป็น:

   var results = data * 100;
   sheet.getRange(row, col+1).setValue(results);
}

เมื่อคุณเขียนฟังก์ชันเสร็จแล้ว ให้เลือกไอคอนดิสก์เพื่อบันทึก 

ครั้งแรกที่คุณเรียกใช้ ฟังก์ชันสคริปต์ Google ชีต(Google Sheets) ใหม่ เช่นนี้ (โดยการเลือกไอคอนเรียกใช้) คุณจะต้องให้การอนุญาต(Authorization)สำหรับสคริปต์เพื่อทำงานในบัญชี Google(Google Account)ของคุณ

ให้สิทธิ์เพื่อดำเนินการต่อ เมื่อสคริปต์ของคุณทำงาน คุณจะเห็นว่าสคริปต์นั้นเขียนผลการคำนวณไปยังเซลล์เป้าหมาย

เมื่อคุณรู้วิธีเขียนฟังก์ชันสคริปต์พื้นฐานของ Google Apps(Google Apps)แล้ว มาดูฟังก์ชันขั้นสูงเพิ่มเติมกันบ้าง

ใช้ getValues ​​เพื่อโหลดอาร์เรย์(Use getValues To Load Arrays)

คุณสามารถใช้แนวคิดในการคำนวณข้อมูลในสเปรดชีตด้วยการสร้างสคริปต์ขึ้นอีกระดับโดยใช้อาร์เรย์ หากคุณโหลดตัวแปรใน สคริปต์ Google Appsโดยใช้ getValues ​​ตัวแปรนั้นจะเป็นอาร์เรย์ที่สามารถโหลดค่าได้หลายค่าจากชีต

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var data = sheet.getDataRange().getValues();

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

ในสเปรดชีตตัวอย่างของเรา คุณสามารถคำนวณข้อมูลสามแถวได้ดังนี้

for (var i = 1; i < data.length; i++) {
   var result = data[i][0] * 100;
   sheet.getRange(i+1, 2).setValue(result); 
   }
}

บันทึก(Save)และเรียกใช้สคริปต์นี้เหมือนกับที่คุณทำด้านบน คุณจะเห็นว่าผลลัพธ์ทั้งหมดอยู่ในคอลัมน์ 2 ในสเปรดชีตของคุณ

คุณจะสังเกตเห็นว่าการอ้างอิงเซลล์และแถวในตัวแปรอาร์เรย์นั้นแตกต่างจากฟังก์ชัน getRange 

data[i][0]หมายถึงมิติอาร์เรย์ที่มิติแรกคือแถวและส่วนที่สองคือคอลัมน์ ทั้งสองสิ่งนี้เริ่มต้นที่ศูนย์

getRange(i+1, 2)หมายถึงแถวที่สองเมื่อ i=1 (เนื่องจากแถวที่ 1 เป็นส่วนหัว) และ 2 คือคอลัมน์ที่สองที่เก็บผลลัพธ์

ใช้ appendRow เพื่อเขียนผลลัพธ์(Use appendRow To Write Results)

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

ซึ่งทำได้ง่ายด้วยฟังก์ชันappendRow ฟังก์ชันนี้จะไม่รบกวนข้อมูลที่มีอยู่ในแผ่นงาน มันจะผนวกแถวใหม่ต่อท้ายแผ่นงานที่มีอยู่

ตัวอย่างเช่น สร้างฟังก์ชันที่จะนับตั้งแต่ 1 ถึง 10 และแสดงตัวนับที่มีทวีคูณของ 2 ในคอลัมน์ ตัว นับ(Counter)

ฟังก์ชันนี้จะมีลักษณะดังนี้:

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();

   for (var i = 1; i<11; i++) {
      var result = i * 2;
     sheet.appendRow([i,result]);
   }
}

นี่คือผลลัพธ์เมื่อคุณเรียกใช้ฟังก์ชันนี้

ประมวลผลฟีด RSS ด้วย URLFetchApp(Process RSS Feeds With URLFetchApp)

คุณสามารถรวมฟังก์ชันสคริปต์ของ Google ชีต ก่อนหน้าและ (Google Sheets)URLFetchAppเพื่อดึง ฟีด RSSจากเว็บไซต์ใดๆ และเขียนแถวลงในสเปรดชีตสำหรับทุกบทความที่เพิ่งเผยแพร่ไปยังเว็บไซต์นั้น

นี่เป็น วิธีการ DIYเพื่อสร้างสเปรดชีตโปรแกรมอ่านฟีดRSS ของคุณเอง!(RSS)

สคริปต์ในการทำเช่นนี้ก็ไม่ซับซ้อนเกินไปเช่นกัน

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var item, date, title, link, desc; 
   var txt = UrlFetchApp.fetch("https://www.topsecretwriters.com/rss").getContentText();
   var doc = Xml.parse(txt, false);  

   title = doc.getElement().getElement("channel").getElement("title").getText();
   var items = doc.getElement().getElement("channel").getElements("item");   

// Parsing single items in the RSS Feed

for (var i in items) {
   item  = items[i];
   title = item.getElement("title").getText();
   link  = item.getElement("link").getText();
   date  = item.getElement("pubDate").getText();
   desc  = item.getElement("description").getText();
   
   sheet.appendRow([title,link,date,desc]);
}
}

อย่างที่คุณเห็นXml.parseจะดึงแต่ละรายการออกจาก ฟีด RSSและแยกแต่ละบรรทัดออกเป็นชื่อ ลิงก์ วันที่ และคำอธิบาย 

เมื่อใช้ ฟังก์ชัน appendRowคุณสามารถใส่รายการเหล่านี้ลงในคอลัมน์ที่เหมาะสมสำหรับทุกรายการใน ฟี ดRSS

ผลลัพธ์ในชีตของคุณจะมีลักษณะดังนี้:

แทนที่จะฝังURL ของ ฟีดRSSลงในสคริปต์ คุณสามารถมีฟิลด์ในชีตของคุณด้วยURLจากนั้นมีหลายชีต – หนึ่งฟิลด์สำหรับทุกเว็บไซต์ที่คุณต้องการตรวจสอบ

(Concatenate Strings)เชื่อม ต่อสตริงและเพิ่ม(Add)Carriage Return

คุณสามารถใช้ สเปรดชีต RSSได้อีกขั้นด้วยการเพิ่มฟังก์ชันการจัดการข้อความ จากนั้นใช้ฟังก์ชันอีเมลเพื่อส่งอีเมลพร้อมสรุปโพสต์ใหม่ทั้งหมดใน ฟี ดRSS ของไซต์(RSS)

ในการดำเนินการนี้ ภายใต้สคริปต์ที่คุณสร้างในส่วนก่อนหน้า คุณจะต้องเพิ่มสคริปต์ที่จะดึงข้อมูลทั้งหมดในสเปรดชีต 

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

เมื่อต้องการทำเช่นนี้ ให้เริ่มต้นหัวเรื่องและข้อความโดยวางบรรทัดต่อไปนี้ก่อน "รายการ" For loop

var subject = ‘Latest 10 articles published at mysite.com’
var message = ‘’

จากนั้น ที่ส่วนท้ายของ "items" for loop (หลังฟังก์ชัน appendRow) ให้เพิ่มบรรทัดต่อไปนี้

message = message + title + '\n' + link + '\n' + date + '\n' + desc + '\n' + '\n \n';

สัญลักษณ์ “+” จะเชื่อมทั้งสี่รายการเข้าด้วยกัน ตามด้วย “ ” สำหรับการขึ้นบรรทัดใหม่หลังแต่ละบรรทัด ในตอนท้ายของแต่ละช่องข้อมูลชื่อเรื่อง คุณจะต้องการขึ้นบรรทัดใหม่สองครั้งสำหรับเนื้อหาอีเมลที่มีรูปแบบสวยงาม

เมื่อแถวทั้งหมดได้รับการประมวลผลแล้ว ตัวแปร "body" จะเก็บสตริงข้อความอีเมลทั้งหมดไว้ ตอนนี้คุณพร้อมที่จะส่งอีเมลแล้ว!

วิธีส่งอีเมลใน Google Apps Script(How To Send Email In Google Apps Script)

ส่วนถัดไปของGoogle Script ของคุณ คือการส่ง "หัวเรื่อง" และ "เนื้อหา" ทางอีเมล การทำเช่นนี้ในGoogle Scriptนั้นง่ายมาก

var emailAddress = [email protected];
MailApp.sendEmail(emailAddress, subject, message);

MailApp เป็นคลาสที่สะดวกมากภายในสคริปต์(MailApp)Google Appsที่ให้คุณเข้าถึงบริการอีเมลของบัญชี Google ของคุณเพื่อส่งหรือรับอีเมล ด้วยเหตุนี้ บรรทัดเดียวที่มีฟังก์ชัน sendEmail ช่วยให้คุณสามารถส่งอีเมล(send any email)ที่มีเพียงที่อยู่อีเมล หัวเรื่อง และเนื้อหาได้

นี่คือสิ่งที่อีเมลผลลัพธ์จะมีลักษณะเช่นนี้ 

การรวมความสามารถในการดึงข้อมูล RSS(RSS) ของเว็บไซต์ เก็บไว้ในGoogle ชี(Google Sheet)ต และส่งให้ตัวคุณเองพร้อม ลิงก์ URLทำให้สะดวกต่อการติดตามเนื้อหาล่าสุดสำหรับเว็บไซต์ใดๆ

นี่เป็นเพียงตัวอย่างหนึ่งของประสิทธิภาพที่มีอยู่ใน สคริปต์ ของ Google Apps(Google Apps)ในการทำให้การทำงานเป็นอัตโนมัติและผสานรวมบริการระบบคลาวด์ที่หลากหลาย



About the author

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



Related posts