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


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

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

<รูป class = "lazy aligncenter">

ในบทความนี้คุณจะได้เรียนรู้วิธีเริ่มต้นใช้งานสคริปต์ 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); }

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

<รูป class = "lazy aligncenter">

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

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

<รูป class = "lazy aligncenter">

ตอนนี้คุณรู้วิธีการเขียนฟังก์ชันสคริปต์พื้นฐานของ 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 ใน ตัวนับ

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

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

ผลลัพธ์ในแผ่นงานของคุณจะมีลักษณะ บางอย่างเช่นนี้:

<รูป class = "lazy aligncenter">

แทน ในการฝัง 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 ช่วยให้คุณ ส่งอีเมลใด ๆ มีที่อยู่อีเมลหัวเรื่องและเนื้อหาข้อความ

นี่คือลักษณะที่ปรากฏของอีเมล .

<รูป class = "lazy aligncenter">

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

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

Python สำหรับแฮกเกอร์ PART 3.1 - อธิบาย Script ของ ฟังก์ชั่นและการป้อนค่า

กระทู้ที่เกี่ยวข้อง:


16.01.2020