Google ชีตเป็นเครื่องมือสเปรดชีตบนคลาวด์ที่ทรงพลังซึ่งช่วยให้คุณทำเกือบทุกอย่างที่คุณสามารถทำได้ใน Microsoft Excel แต่พลังที่แท้จริงของ Google ชีตคือคุณลักษณะการเขียนสคริปต์ของ Google ที่มาพร้อมกับมัน
การเขียนสคริปต์ของ Google Apps เป็นเครื่องมือการเขียนสคริปต์พื้นหลังที่ใช้งานได้ไม่เพียง ใน Google ชีต แต่ยังรวมถึง Google เอกสาร Gmail , Google Analytics และเกือบทุกบริการคลาวด์อื่น ๆ ของ Google มันช่วยให้คุณทำให้แอพแต่ละตัวนั้นเป็นอัตโนมัติและรวมแอพแต่ละตัวเข้าด้วยกัน
ในบทความนี้คุณจะได้เรียนรู้วิธีเริ่มต้นใช้งานสคริปต์ Google Apps การสร้างสคริปต์พื้นฐานใน Google ชีตเพื่ออ่านและเขียนข้อมูลเซลล์และ Google ชีตขั้นสูงที่มีประสิทธิภาพสูงสุด ฟังก์ชั่นสคริปต์
วิธีสร้างสคริปต์ Google Apps
คุณสามารถเริ่มต้นได้ทันทีในขณะนี้สร้างสคริปต์ Google Apps แรกของคุณจากภายใน Google ชีต
ในการดำเนินการนี้ให้เลือก เครื่องมือจากเมนูจากนั้นเลือก ตัวแก้ไขสคริปต์
สิ่งนี้จะเปิดหน้าต่างตัวแก้ไขสคริปต์และใช้ค่าเริ่มต้นเป็นฟังก์ชันที่เรียกว่า myfunction ()ที่นี่คุณสามารถสร้างและทดสอบ Google Script ของคุณ
In_content_1 ทั้งหมด: [300x250] / dfp: [640x360]->หากต้องการถ่ายภาพลองสร้างฟังก์ชันสคริปต์ Google ชีตที่จะอ่านข้อมูลจากเซลล์หนึ่งทำการคำนวณและส่งออกจำนวนข้อมูลไปยังเซลล์อื่น
ฟังก์ชั่นเพื่อรับข้อมูลจากเซลล์คือฟังก์ชัน 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 ของคุณ
อนุญาตให้ดำเนินการต่อ เมื่อสคริปต์ของคุณทำงานคุณจะเห็นว่าสคริปต์นั้นเขียนผลลัพธ์การคำนวณไปยังเซลล์เป้าหมาย
ตอนนี้คุณรู้วิธีการเขียนฟังก์ชันสคริปต์พื้นฐานของ Google Apps แล้วเรามาดูฟังก์ชั่นขั้นสูงอื่น ๆ
ใช้ getValues เพื่อโหลดอาร์เรย์
คุณสามารถนำแนวคิดของการคำนวณข้อมูลในสเปรดชีตของคุณโดยใช้สคริปต์ไปยังระดับใหม่โดยใช้อาร์เรย์ หากคุณโหลดตัวแปรในสคริปต์ Google Apps โดยใช้ getValues ตัวแปรนั้นจะเป็นอาร์เรย์ที่สามารถโหลดค่าหลายค่าจากชีต
function myFunction() {var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getDataRange().getValues();
ตัวแปรข้อมูลเป็นหลายมิติ อาร์เรย์ที่เก็บข้อมูลทั้งหมดจากชีต ในการคำนวณข้อมูลคุณใช้ลูป สำหรับตัวนับของ for for จะทำงานผ่านแต่ละแถวและคอลัมน์ยังคงที่โดยขึ้นอยู่กับคอลัมน์ที่คุณต้องการดึงข้อมูล
ในสเปรดชีตตัวอย่างของเราคุณสามารถทำการคำนวณในสามแถว จากข้อมูลดังนี้
for (var i = 1; i < data.length; i++) {var result = data[i][0] * 100; sheet.getRange(i+1, 2).setValue(result); } }
บันทึกและเรียกใช้สคริปต์นี้เหมือนกับที่คุณทำด้านบน คุณจะเห็นว่าผลลัพธ์ทั้งหมดถูกเติมลงในคอลัมน์ 2 ในสเปรดชีตของคุณ
คุณจะสังเกตเห็นว่าการอ้างอิงเซลล์และแถวในตัวแปรอาร์เรย์นั้นแตกต่างจากฟังก์ชั่น getRange
data [i] [0]หมายถึงขนาดอาร์เรย์ที่มิติแรกคือแถวและที่สองคือคอลัมน์ ทั้งคู่เริ่มต้นที่ศูนย์
getRange (i + 1, 2)หมายถึงแถวที่สองเมื่อ i = 1 (เนื่องจากแถวที่ 1 คือส่วนหัว) และ 2 คือ คอลัมน์ที่สองที่จัดเก็บผลลัพธ์
ใช้ appendRow เพื่อเขียนผลลัพธ์
จะเกิดอะไรขึ้นถ้าคุณมีสเปรดชีตที่คุณต้องการเขียนข้อมูลลงในใหม่ แถวแทนที่จะเป็นคอลัมน์ใหม่
คุณสามารถใช้ฟังก์ชั่น appendRowได้ง่ายๆ ฟังก์ชั่นนี้จะไม่รบกวนข้อมูลใด ๆ ที่มีอยู่ในแผ่นงาน มันจะต่อท้ายแถวใหม่ไปยังแผ่นงานที่มีอยู่
เป็นตัวอย่างให้สร้างฟังก์ชันที่จะนับจาก 1 ถึง 10 และแสดงตัวนับที่มีทวีคูณเป็น 2 ใน ตัวนับคอลัมน์ strong>
ฟังก์ชันนี้จะมีลักษณะดังนี้:
function myFunction() {var sheet = SpreadsheetApp.getActiveSheet(); for (var i = 1; i<11; i++) { var result = i * 2; sheet.appendRow([i,result]); } }
นี่คือผลลัพธ์เมื่อคุณเรียกใช้ฟังก์ชันนี้
ประมวลผล RSS ฟีดด้วย URLFetchApp
คุณสามารถรวมฟังก์ชั่นสคริปต์ก่อนหน้าของ Google ชีตกับ URLFetchAppเพื่อดึงฟีด RSS จากเว็บไซต์ใด ๆ และเขียนแถวลงในสเปรดชีตสำหรับทุกบทความที่เผยแพร่ไปยังเว็บไซต์นั้น .
นี่เป็นวิธี DIY ในการสร้างสเปรดชีตโปรแกรมอ่านฟีด 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 และแยกแต่ละบรรทัดออกเป็นชื่อลิงค์วันที่และคำอธิบาย
การใช้ฟังก์ชั่น ผนวกท้ายคุณสามารถใส่รายการเหล่านี้ลงในคอลัมน์ที่เหมาะสมสำหรับทุกรายการในฟีด RSS
ผลลัพธ์ในแผ่นงานของคุณจะมีลักษณะ บางอย่างเช่นนี้:
แทน ในการฝัง URL ฟีด RSS ลงในสคริปต์คุณสามารถมีฟิลด์ในชีตของคุณด้วย URL จากนั้นมีหลายชีต - หนึ่งชีตสำหรับทุกเว็บไซต์ที่คุณต้องการตรวจสอบ
เชื่อมโยงสตริงและเพิ่ม Carriage Return
คุณสามารถเพิ่มสเปรดชีต RSS ได้อีกขั้นด้วยการเพิ่มฟังก์ชั่นการจัดการข้อความจากนั้นใช้ฟังก์ชั่นอีเมล์เพื่อส่งอีเมลพร้อมสรุปการโพสต์ใหม่ทั้งหมด ในฟีด RSS ของไซต์
ในการทำเช่นนี้ภายใต้สคริปต์ที่คุณสร้างในส่วนก่อนหน้าคุณจะต้องเพิ่มสคริปต์บางตัวที่จะดึงข้อมูลทั้งหมดในสเปรดชีต
คุณต้องการสร้างบรรทัดหัวเรื่องและเนื้อหาข้อความอีเมลโดยแยกวิเคราะห์ข้อมูลทั้งหมดจากอาร์เรย์ "รายการ" เดียวกันกับที่คุณใช้เขียนข้อมูล RSS ลงในสเปรดชีต
เมื่อต้องการทำสิ่งนี้ให้เริ่มต้นหัวเรื่องและข้อความโดยวางบรรทัดต่อไปนี้ไว้ข้างหน้า "รายการ" สำหรับลูป
var subject = ‘Latest 10 articles published at mysite.com’
var message = ‘’
จากนั้นเมื่อสิ้นสุด "items" สำหรับลูป (หลังจากฟังก์ชั่น appendRow) เพิ่มบรรทัดต่อไปนี้
message = message + title + '\n' + link + '\n' + date + '\n' + desc + '\n' + '\n \n';
สัญลักษณ์“ +” จะเชื่อมทั้งสี่รายการเข้าด้วยกันตามด้วย“ \ n ” สำหรับการรับคืนตลับหมึกหลังจากแต่ละบรรทัด ในตอนท้ายของแต่ละบล็อคข้อมูลหัวเรื่องคุณจะต้องการให้ carriage return สองตัวสำหรับเนื้อหาอีเมลที่จัดรูปแบบเป็นอย่างดี
เมื่อประมวลผลแถวทั้งหมดแล้วตัวแปร "body" จะเก็บสตริงข้อความอีเมลทั้งหมด ตอนนี้คุณพร้อมที่จะส่งอีเมลแล้ว!
วิธีส่งอีเมลในสคริปต์ของ Google Apps
ส่วนถัดไปของสคริปต์ Google ของคุณคือการส่ง "หัวเรื่อง" และ "เนื้อหา" ผ่านอีเมล การดำเนินการนี้ใน Google Script นั้นง่ายมาก
var emailAddress = [email protected];
MailApp.sendEmail(emailAddress, subject, message);
MailApp เป็นคลาสที่สะดวกมากในสคริปต์ Google Apps ที่ให้คุณเข้าถึงบริการอีเมลของบัญชี Google เพื่อส่งหรือรับ อีเมล ด้วยสิ่งนี้บรรทัดเดียวที่มีฟังก์ชั่น sendEmail ช่วยให้คุณ ส่งอีเมลใด ๆ มีที่อยู่อีเมลหัวเรื่องและเนื้อหาข้อความ
นี่คือลักษณะที่ปรากฏของอีเมล .
การรวมความสามารถในการแยก ฟีด RSS ของเว็บไซต์จัดเก็บไว้ใน Google ชีตและส่งไปให้ตัวคุณเองพร้อมกับลิงค์ URL ที่รวมอยู่ทำให้สะดวกในการติดตามเนื้อหาล่าสุดสำหรับเว็บไซต์ใด ๆ
นี่เป็นเพียงตัวอย่างหนึ่งของพลัง มีให้ในสคริปต์ของ Google Apps เพื่อดำเนินการอัตโนมัติและรวมบริการคลาวด์หลายตัว