วิธีใช้ Google Docs เป็น Code Runner

Google Docs as Programming IDE

คุณใช้ Google Docs เพื่อเขียนเอกสารและเรียงความ แต่คุณรู้หรือไม่ว่าตัวแก้ไขเดียวกันนี้สามารถใช้เขียนและเรียกใช้โค้ด JavaScript ได้

ไม่มีการแทนที่ IDE เฉพาะเช่นโค้ด Visual Studio แต่ Google Docs สามารถใช้เป็นสนามเด็กเล่น JavaScript เพื่อเรียกใช้ข้อมูลโค้ดได้อย่างรวดเร็ว

นี่คือ ตัวอย่างเอกสาร ที่เขียนใน Google Docs และเนื้อหาของเอกสารมีฟังก์ชัน JavaScript ที่คำนวณจำนวนวันที่เหลือจนถึงวันคริสต์มาสปีหน้า

ไปที่เมนู Code Runner เลือก Run JavaScript และผลลัพธ์ของฟังก์ชันจะแสดงในป๊อปอัป ดูการสาธิต

Google Docs - โค้ดรันเนอร์

โค้ดรันเนอร์ใน Google Docs

ภายในมี Google Apps Script เล็กๆ น้อยๆ ที่ทำสิ่งมหัศจรรย์ได้ มันอ่านเนื้อหาของเอกสาร Google ของคุณเป็นสตริงข้อความและใช้ eval() ของ JavaScript เพื่อประเมินข้อความ

 /** * @OnlyCurrentDoc */ function codeRunner ( ) { const doc = DocumentApp . getActiveDocument ( ) ; const text = doc . getBody ( ) . getText ( ) ; const response = eval ( text ) ; DocumentApp . getUi ( ) . alert ( response ) ; } function onOpen ( ) { const ui = DocumentApp . getUi ( ) ; const menu = ui . createMenu ( 'Code Runner' ) ; menu . addItem ( '🦄 Run JavaScript ' , 'codeRunner' ) ; menu . addToUi ( ) ; }

การอ่านที่เกี่ยวข้อง:

วิธีที่ครูสามารถส่งอีเมลถึงผู้ปกครองของนักเรียนจาก Google ฟอร์ม

Parent Consent Form

โรงเรียนจัดเตรียมบัญชีอีเมลสำหรับนักเรียนที่ลงทะเบียนในโรงเรียนมัธยมศึกษาตอนปลาย โรงเรียนได้เผยแพร่ Google ฟอร์มแล้ว และนักเรียนทุกคนสามารถใส่ชื่อของตนเองในแบบฟอร์มเพื่อขอเข้าถึงที่อยู่อีเมลได้

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

ค้นหาข้อมูลของผู้ปกครองใน Google ชีต

สิ่งสำคัญคือควรส่งอีเมลถึงผู้ปกครองของนักเรียน ข้อมูลนี้ไม่มีอยู่ใน Google ฟอร์ม แต่โรงเรียนจะเก็บ Google ชีตที่มีข้อมูลของผู้ปกครอง และเราจะทำการค้นหาเพื่อเรียกชื่อผู้ปกครองและที่อยู่อีเมลตามชื่อของนักเรียน

Student Parent's Data

เมื่อส่งแบบฟอร์ม Google แถวใหม่จะถูกเพิ่มลงใน Google ชีตพร้อมคำตอบของแบบฟอร์ม

เราจะเพิ่มคอลัมน์ใหม่สองคอลัมน์ในแผ่นงานการตอบกลับของแบบฟอร์มซึ่งจะ ค้นหา ที่อยู่อีเมลและชื่อผู้ปกครองจากแผ่นงานระเบียนหลัก มันใช้ ArrayFormula เพื่อดึงข้อมูลของผู้ปกครองในแผ่นงานแบบฟอร์มทันทีหลังจากส่งการตอบกลับแบบฟอร์มใหม่

 = ArrayFormula ( IF ( ROW ( B : B ) = 1 , "Parent's Email" , IF ( NOT ( ISBLANK ( B : B ) ) , VLOOKUP ( B : B , Parents ! $ A $2 : $ C $100 , 3 , FALSE ) , ) ) )

หาก Row Number ของแถวปัจจุบันคือ 1 เราจะตั้งชื่อคอลัมน์ซึ่งในกรณีนี้คือ Parent's Email ถ้าแถวไม่ใช่ 1 และมีข้อมูลแบบฟอร์มในคอลัมน์ B เราใช้ VLOOKUP เพื่อรับข้อมูลที่ตรงกันจากแผ่นงานระเบียนหลักลงในแผ่นงานตอบกลับของแบบฟอร์ม

Google Sheets Lookup

ส่งอีเมลถึงผู้ปกครองของนักเรียน

ขั้นตอนแรกคือการติดตั้ง Document Studio จาก Google Marketplace ถัดไป สลับไปที่ Google ชีตที่จัดเก็บการตอบกลับของ Google Form และไปที่ Extensions > Document Studio > Open เพื่อเปิดส่วนเสริม

สร้างเวิร์กโฟลว์ใหม่และตั้งชื่อที่สื่อความหมาย เช่น Send Consent Letters to Parents บนหน้าจองาน สร้างงานอีเมลใหม่และเลือกฟิลด์อีเมลของผู้ปกครองจากดรอปดาวน์ “ส่งอีเมลไปที่”

เทมเพลตอีเมลขั้นสุดท้ายจะมีลักษณะดังนี้:

Parent Email Template

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

สลับไปที่หน้าจอ Save ของเวิร์กโฟลว์ของคุณ และเปิดตัวเลือกที่ระบุว่า Run on Form Submit การดำเนินการนี้จะเปิดใช้งาน ทริกเกอร์การส่งแบบฟอร์ม เป็นการภายใน และเวิร์กโฟลว์ของคุณจะทำงานทุกครั้งที่ส่งแบบฟอร์มใหม่

Form Submit trigger

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

คุณยังสามารถเพิ่มงานสร้างไฟล์ในเวิร์กโฟลว์เดียวกันเพื่อสร้างเอกสารขอความยินยอมใน Microsoft Word หรือ PDF สามารถแนบไปกับข้อความอีเมลได้โดยอัตโนมัติ และผู้ปกครองสามารถส่งอีเมลสำเนาที่ลงนามแล้วได้

สำหรับความช่วยเหลือ โปรดดูบทช่วยสอนนี้ – สร้างข้อตกลงจาก Google Form Responses

วิธีทำการ์ดสถานที่ส่วนบุคคลพร้อมชื่อแขก

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

Personalized Wedding Place Cards

บทช่วยสอนนี้อธิบายวิธีสร้างการ์ดสถานที่ส่วนบุคคลพร้อมชื่อแขกของคุณและหมายเลขโต๊ะที่พวกเขาได้รับมอบหมาย เราจะใช้ Google ชีตเพื่อสร้างแผนผังที่นั่งสำหรับงานเลี้ยง Google สไลด์เพื่อออกแบบเทมเพลตการ์ดสถานที่และ Document Studio เพื่อสร้างการ์ดสถานที่เหล่านั้นเป็นไฟล์ PDF ใน Google ไดรฟ์

มาเริ่มกันเลย.

Wedding Seating Plan

สร้างแผนผังที่นั่งสำหรับแขก

สร้างสเปรดชีตใหม่ภายใน Google ชีต ( sheet.new ) ป้อนชื่อจากรายชื่อผู้เข้าร่วมและกำหนดหมายเลขโต๊ะสำหรับแขกแต่ละคน ตรวจสอบให้แน่ใจว่าทั้งสองคอลัมน์มีชื่อตามที่แสดงในภาพหน้าจอด้านบน

ดูเพิ่มเติมที่: สร้างนามบัตรจาก Google ชีต

สร้างเทมเพลตการ์ดสถานที่

สร้างชุดสไลด์ใหม่ใน Google สไลด์ ( slides.new ) หรือใช้ เทมเพลตสำเร็จรูป นี้เพื่อเริ่มต้นอย่างรวดเร็ว ไปที่ File > Page Setup และเปลี่ยนขนาดหน้าเริ่มต้นเป็น 1050×1200 พิกเซล เพิ่มตัวยึดตำแหน่งสำหรับใส่ชื่อแขกและหมายเลขโต๊ะในบัตรที่สร้างขึ้น

Escorts card Template

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

เคล็ดลับ: หากคุณไม่ใช่นักออกแบบ ให้ใช้เทมเพลต Canva อันใดอันหนึ่งแล้วนำเข้าการออกแบบไปยัง Google สไลด์ตามที่อธิบายไว้ในบทช่วย สอน นี้

กำหนดค่าบัตรสถานที่

ขั้นตอนแรกคือการติดตั้ง Document Studio จาก Google Marketplace คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับกระบวนการติดตั้งได้ ที่นี่

ถัดไป สลับไปที่ Google ชีตที่มีรายชื่อแขกของคุณและโหลดแผ่นงานใหม่เพื่อให้ Document Studio ที่เพิ่งติดตั้งปรากฏขึ้นภายในชีต

Place Card Generator

ภายใน Google ชีต ให้ไปที่เมนูส่วนขยาย เลือก Document Studio แล้วเลือกเปิด สร้างเวิร์กโฟลว์ใหม่ ตั้งชื่อที่สื่อความหมาย จากนั้นเลือก Google ชีตที่มีรายชื่อผู้เข้าร่วม

ไปที่หน้าจอ Tasks และเลือกงาน Create File เนื่องจากเราจะสร้างไฟล์ PDF จากข้อมูลใน Google ชีต

สำหรับช่องเทมเพลตเอกสาร ให้เลือกเทมเพลต Google Slides ที่คุณออกแบบในขั้นตอนก่อนหน้า จากนั้นเลือกโฟลเดอร์ใน Google ไดรฟ์ที่จะบันทึกบัตรสถานที่ คุณสามารถใช้ตัวยึดตำแหน่ง สำหรับชื่อไฟล์ ดังนั้นจึงสร้างชื่อไฟล์ที่ไม่ซ้ำกันสำหรับ PDF แต่ละไฟล์

Google Drive Folder

สร้างการ์ดสถานที่เป็นกลุ่ม

เมื่อกำหนดค่าเสร็จแล้ว ให้ไปที่ Save Screen แล้วเลือก Save and Run เวิร์กโฟลว์ คุณจะเห็นรายการหมายเลขแถวที่จะสร้างบัตรสถานที่

คลิกที่ Run Workflow เพื่อสร้างการ์ดสถานที่ส่วนตัวสำหรับแขกของคุณแต่ละคนในทันที

Generate Place Cards in Bulk

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

วิธีคำนวณคะแนนร้อยละในแบบทดสอบของ Google ฟอร์ม

Google Form Quiz

เราได้สร้างแบบทดสอบง่ายๆ ใน Google ฟอร์มที่มีคำถาม 3 ข้อ และแต่ละคำตอบที่ถูกต้องจะให้ 10 คะแนน คะแนนสูงสุดที่สามารถทำได้ในแบบทดสอบคือ 30 คะแนน

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

มีบางอย่างที่น่าสนใจที่นี่เช่นกัน หากแบบฟอร์มที่เกี่ยวข้องเป็นแบบทดสอบ Google ชีตจะเพิ่มคอลัมน์พิเศษในใบตอบที่ชื่อ “คะแนน” โดยอัตโนมัติ และคอลัมน์นี้จะมีคะแนนรวมที่ผู้ตอบได้รับในแบบทดสอบ

Google Forms Quiz Score in Google Sheets

แปลงคะแนนแบบทดสอบเป็นเปอร์เซ็นต์

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

แยกคะแนนที่ได้รับ

มีอย่างน้อยสามวิธีในการดึงคะแนนแบบทดสอบที่ได้รับจากเซลล์ B2 ลองสำรวจบางส่วนของพวกเขา

ฟังก์ชัน REGEXREPLACE จะแทนที่ค่าสตริงที่ตรงกับ RegEx ด้วยค่าอื่น ในที่นี้ เราเริ่มต้นด้วยอักขระตัวแรกในเซลล์ที่ไม่ใช่ตัวเลข จับคู่ทุกอย่างจนกระทั่งสิ้นสุดสตริงและแทนที่ด้วยช่องว่าง ดังนั้นเครื่องหมายทับ (/) และทุกอย่างหลังจากเครื่องหมายทับจะถูกแทนที่ และเราเหลือเพียงคะแนนเท่านั้น

 = REGEXREPLACE ( TO_TEXT ( B2 ) , "\D.+$" , "" )

สำหรับวิธีที่สอง เราใช้ฟังก์ชัน SPLIT เพื่อแยกข้อความในคอลัมน์คะแนน โดยใช้เครื่องหมายทับเป็นตัวคั่น จากนั้นใช้ฟังก์ชัน INDEX เพื่อรับค่าแรกของอาร์เรย์แยกซึ่งมีคะแนน

 = INDEX ( SPLIT ( B2 , "/" ) , 1 )

ในแนวทางถัดไป เราใช้ฟังก์ชัน SEARCH เพื่อกำหนดตำแหน่งของเครื่องหมายทับในเซลล์ และใช้ฟังก์ชัน LEFT เพื่อรับทุกอย่างก่อนเครื่องหมายทับ

 = LEFT ( B2 , SEARCH ( "/" , B2 ) - 1 )

แยกคะแนนแบบทดสอบทั้งหมด

เราสามารถใช้แนวทางที่คล้ายกันเพื่อให้ได้คะแนนสูงสุดของแบบทดสอบ และตัวเลขนั้นอยู่หลังเครื่องหมายทับในคอลัมน์คะแนน

 = REGEXREPLACE ( TO_TEXT ( B2 ) , "\d.+/" , "" ) = INDEX ( SPLIT ( B2 , "/" ) , 2 ) = RIGHT ( B2 , SEARCH ( "/" , B2 ) - 1 )

คำนวณเปอร์เซ็นต์แบบทดสอบ

ตอนนี้เรามีสูตรแยกคะแนนแบบทดสอบและคะแนนรวมแล้ว เราสามารถรวมสูตรเหล่านี้เพื่อให้ได้คะแนนเป็นเปอร์เซ็นต์

ตัวเลือกของคุณคือ:

 = REGEXREPLACE ( TO_TEXT ( B2 ) , "\D.+$" , "" ) / REGEXREPLACE ( TO_TEXT ( B2 ) , "\d.+/" , "" ) = INDEX ( SPLIT ( B2 , "/" ) , 1 ) / INDEX ( SPLIT ( B2 , "/" ) , 2 ) = LEFT ( B2 , SEARCH ( "/" , B2 ) - 1 ) / RIGHT ( B2 , SEARCH ( "/" , B2 ) - 1 )

คลิกขวาที่คอลัมน์คะแนน เลือก Insert 1 column left จากเมนูตามบริบท และวางสูตรข้างต้นในเซลล์ C2 จากนั้นคุณอาจคัดลอกสูตรลงไปที่แถวอื่นๆ ที่มีการตอบคำถาม

คัดลอกลงแบบทดสอบคะแนนเปอร์เซ็นต์โดยอัตโนมัติ

ข้อเสียเปรียบประการหนึ่งของแนวทางก่อนหน้านี้คือ คุณต้องเพิ่มสูตรในแถวทุกครั้งที่ส่งแบบทดสอบใหม่

วิธีแก้ปัญหาอย่างง่ายคือวิธีการ คัดลอกสูตรลง ซึ่งจะเพิ่มสูตรโดยอัตโนมัติทุกครั้งที่ส่งแบบฟอร์มแบบทดสอบใหม่

Quiz Percentage Formula

ไปที่เซลล์ C1 และวางสูตรด้านล่าง

 = ArrayFormula ( IF ( ROW ( B : B ) = 1 , "Percentage" , IF ( NOT ( ISBLANK ( B : B ) ) , LEFT ( B : B , SEARCH ( "/" , B : B ) - 1 ) / RIGHT ( B : B , SEARCH ( "/" , B : B ) - 1 ) , ) ) )

จะดูที่ดัชนีแถว และถ้าเป็นแถวแรก จะเพิ่มชื่อคอลัมน์ ถัดไป จะตรวจสอบว่ามีค่าคะแนนในคอลัมน์ B หรือไม่ แล้วคำนวณคะแนนเปอร์เซ็นต์

จากนั้นเลือกคอลัมน์ C ไปที่ Format > Number > Percent เพื่อจัดรูปแบบเปอร์เซ็นต์ที่คำนวณได้อย่างเหมาะสม

คุณยังสามารถ Document Studio เพื่อ ส่งใบรับรองตามคะแนนแบบทดสอบ

วิธีใช้เซิร์ฟเวอร์ Gmail SMTP สำหรับการส่งอีเมล

บทช่วยสอนทีละขั้นตอนนี้อธิบายวิธีที่คุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์ Gmail SMTP สำหรับการส่งอีเมลจากเว็บแอปพลิเคชัน Node.js ที่สามารถปรับใช้บน Google Cloud Functions, AWS Lambda, Cloud Run หรือทำงานบนเครื่องในพื้นที่ของคุณ

และไม่เหมือนกับบทช่วยสอน Node SMTP อื่นๆ ส่วนใหญ่ที่ใช้ชื่อผู้ใช้และรหัสผ่านร่วมกัน วิธีนี้ใช้ OAuth และไม่ต้องการให้คุณเปิดการเข้าถึงแอปที่มีความปลอดภัยน้อยในบัญชี Google ของคุณ

สร้างข้อมูลรับรอง OAuth ของ Gmail

สร้าง Google Cloud Project ใหม่และเปิดใช้งาน Gmail API ตามที่อธิบายไว้ในบทช่วย สอนก่อนหน้า

Gmail SMTP OAuth Application

ในส่วน APIs & Services ให้คลิกที่ Credentials และคลิก Create credentials > OAuth Client Id เพื่อสร้างรหัสไคลเอ็นต์ใหม่ที่จะใช้เพื่อระบุแอปพลิเคชันของคุณกับเซิร์ฟเวอร์ OAuth ของ Google

ตั้งค่าประเภทแอปพลิเคชันเป็น Web Application และใส่ URL ต่อไปนี้ใน Authorized Redirect URI

 https://developers.google.com/oauthplayground

คลิกปุ่ม Create แล้วคุณจะได้รับ OAuth Client ID และค่า Client Secret ที่คุณต้องการในขั้นตอนถัดไป

สร้าง Gmail รีเฟรชโทเค็น

Gmail Access Refresh Token

ต่อไป เราจะสร้างโทเค็นการรีเฟรชโดยใช้สนามเด็กเล่น OAuth 2.0 ของ Google Developer โทเค็นการเข้าถึงมีอายุหนึ่งชั่วโมง แต่โทเค็นการรีเฟรชจะคงอยู่ตลอดไป (เว้นแต่จะเพิกถอนด้วยตนเอง) และสามารถใช้เพื่อสร้างโทเค็นการเข้าถึงใหม่ได้

ไปที่ google.com/oauthplayground คลิกไอคอนรูปเฟือง และเลือกตัวเลือกที่ระบุว่า Use your own OAuth credentials คัดลอกและวางรหัสไคลเอ็นต์และรหัสลับไคลเอ็นต์ที่คุณสร้างขึ้นในขั้นตอนก่อนหน้า

ในส่วน Select & Authorize APIs ให้ป้อนขอบเขต https://mail.google.com แล้วคลิกปุ่ม Authorize APIs เพื่อสร้างรหัสการให้สิทธิ์

คลิก Exchange authorization code for tokens เพื่อสร้างโทเค็นการรีเฟรชที่เราต้องการในขั้นตอนถัดไป

Refresh Token

เตรียม Node.js Application

สร้างโฟลเดอร์ใหม่และติดตั้งแพ็คเกจ googleapis และ nodemailer

 mkdir gmail-smtp-sender cd gmail-smtp-sender npm init --y npm install dotenv googleapis nodemailer --save touch index.js

สร้างไฟล์ .env ใหม่ในโฟลเดอร์รูทและเพิ่มข้อมูลรับรองในไฟล์ เพิ่มไฟล์ไปที่ .gitignore เพื่อไม่ให้ถูกเพิ่มลงในที่เก็บ

 // Replace these with your own credentials CLIENT_ID = 'r2l82l8.apps.googleusercontent.com' CLIENT_SECRET = 'GOCSPX-5n00Mqm5Jc45p' REFRESH_TOKEN = '1//04yt8hEatvIr3uyk-ZJSYIhmYqMk4C4EqfPK24w' REDIRECT_URL = 'https://developers.google.com/oauthplayground'

เปิดไฟล์ index.js และเพิ่มรหัสต่อไปนี้ คุณอาจต้องเปลี่ยนอีเมลของผู้ส่งด้วยที่อยู่อีเมลของบัญชี Gmail ของคุณเองซึ่งคุณได้รับอนุญาตให้ส่งอีเมล

ชื่อเซิร์ฟเวอร์ Gmail SMTP คือ smtp.gmail.com และพอร์ต Gmail SMTP คือ 465 คุณสามารถส่งอีเมลได้มากถึง 100 ฉบับต่อวันเมื่อข้อความที่ส่งผ่าน SMTP

 const { google } = require ( 'googleapis' ) ; const nodemailer = require ( 'nodemailer' ) ; require ( 'dotenv' ) . config ( ) ; const sendEmail = async ( ) => { const oauth2Client = new google . auth . OAuth2 ( process . env . CLIENT_ID , process . env . CLIENT_SECRET , process . env . REDIRECT_URL ) ; oauth2Client . setCredentials ( { refresh_token : process . env . REFRESH_TOKEN } ) ; const accessToken = await oauth2Client . getAccessToken ( ) ; const myEmail = '[email protected]' ; const smtpTransport = nodemailer . createTransport ( { service : 'gmail' , host : 'smtp.gmail.com' , port : 465 , secure : true , auth : { type : 'OAuth2' , user : myEmail , clientId : process . env . CLIENT_ID , clientSecret : process . env . CLIENT_SECRET , refreshToken : process . env . REFRESH_TOKEN , accessToken , } , } ) ; const mailOptions = { from : 'Sender Name <[email protected]>' , to : 'Receiver Name <[email protected]>' , subject : 'Test email 🚀' , text : 'This is a test email from Node.js 🎉' , html : 'This is a <b>test email</b> from Node.js 🎉' , } ; try { const response = await smtpTransport . sendMail ( mailOptions ) ; console . log ( ` Email sent! ` , response ) ; } catch ( f ) { console . error ( f . message ) ; } finally { smtpTransport . close ( ) ; } } ; sendEmail ( ) . then ( ( ) => console . log ( 'Done!' ) ) ;

นี่คืออีเมลทดสอบที่ส่งโดยแอปพลิเคชัน ถ้าไคลเอนต์รับอีเมลไม่สนับสนุน เมล HTML เวอร์ชันข้อความธรรมดาจะถูกแสดง

Gmail Sent email

แก้ไขขอบเขต OAuth ของ Gmail

แม้ว่าคุณจะสามารถส่งอีเมลจาก Gmail โดยใช้ขอบเขต https://www.googleapis.com/auth/gmail.send คุณจะต้องใช้ขอบเขต https://mail.google.com/ ที่จำกัดสำหรับ Gmail SMTP หากไคลเอ็นต์ OAuth ของคุณใช้ขอบเขตอื่นเมื่อขอสิทธิ์สำหรับผู้ใช้ แอปพลิเคชันจะส่งคืนข้อผิดพลาด 535-5.7.8 Username and Password not accepted

บอท Twitter ที่มีประโยชน์ที่สุด

Useful Twitter Bots

ตั้งการช่วยเตือนด้วย @RemindMe_OfThis

บอท Twitter แบบโอเพ่นซอร์สที่ให้คุณตั้งค่าการเตือนความจำสำหรับทวีตสาธารณะได้อย่างง่ายดาย พูดถึง @RemindMe_OfThis ในการตอบกลับทวีตใดๆ และระบุเวลาเป็นภาษาอังกฤษตามธรรมชาติเมื่อคุณต้องการเตือนทวีตนั้น

คุณสามารถพูดสิ่งต่างๆ เช่น in 2 days หรือ in 12 hours หรือ next week หรือแม้แต่ in 5 years ตรวจสอบแหล่งที่มาบน Github

บันทึกเธรด Twitter ด้วย @ThreadReaderApp

gurus ใน Twitter พบว่าชุดข้อความเป็นวิธีที่ดีที่สุดในการขยายขอบเขตการเข้าถึงทวีตของพวกเขา และ @ThreadReaderApp ช่วยให้คุณอ่านและบันทึกชุดข้อความเหล่านี้ได้ง่ายมาก

ในการเริ่มต้น ให้ตอบกลับทวีตของเธรดและพูดถึง @threaderapp ด้วยคีย์เวิร์ด “unroll” และพวกเขาสร้างหน้าเดียวที่มีทวีตทั้งหมดเรียงตามลำดับเวลา บล็อกโพสต์ใคร?

ดูเพิ่มเติมที่: ค้นหา Twitter อย่างมืออาชีพ

จับภาพหน้าจอด้วย @pikaso_me

ตอบกลับทวีตด้วยคำว่า “สกรีนช็อตนี้” และระบุ @pikaso_me ในการตอบกลับ คุณจะได้รับทวีตตอบกลับพร้อมภาพหน้าจอของทวีตต้นฉบับ

บอท Twitter จับภาพในทวีต แต่คุณยังสามารถใช้ Screenshot Guru สำหรับสิ่งนั้นได้

ดาวน์โหลดวิดีโอด้วย @DownloaderBot

คุณสามารถดาวน์โหลดวิดีโอหรือภาพ GIF จากทวีตได้อย่างง่ายดายด้วยความช่วยเหลือของบอท Twitter

พูดถึง @DownloaderBot ในการตอบกลับทวีตใดๆ ที่มีทั้งวิดีโอหรือรูปภาพ gif และคุณจะได้รับคำตอบพร้อมลิงก์โดยตรงเพื่อดาวน์โหลดสื่อ

Twitter เช่น YouTube อาจมีความสัมพันธ์ระหว่างความรักและความเกลียดชังกับบอทที่อนุญาตให้ดาวน์โหลดวิดีโอจากแพลตฟอร์มของพวกเขา ดังนั้นจึงควรบุ๊กมาร์กทางเลือกอื่นอยู่เสมอ มี @GetVideoBot , @SendVIDBot และ @Get_This_V

ดูเพิ่มเติมที่: สร้าง Twitter Bots ของคุณเอง

บอท Twitter ที่มีประโยชน์ที่สุด

Useful Twitter Bots

ตั้งการช่วยเตือนด้วย @RemindMe_OfThis

บอท Twitter แบบโอเพ่นซอร์สที่ให้คุณตั้งค่าการเตือนความจำสำหรับทวีตสาธารณะได้อย่างง่ายดาย พูดถึง @RemindMe_OfThis ในการตอบกลับทวีตใดๆ และระบุเวลาเป็นภาษาอังกฤษตามธรรมชาติเมื่อคุณต้องการเตือนทวีตนั้น

คุณสามารถพูดสิ่งต่างๆ เช่น in 2 days หรือ in 12 hours หรือ next week หรือแม้แต่ in 5 years ตรวจสอบแหล่งที่มาบน Github

บันทึกเธรด Twitter ด้วย @ThreadReaderApp

gurus ใน Twitter พบว่าชุดข้อความเป็นวิธีที่ดีที่สุดในการขยายขอบเขตการเข้าถึงทวีตของพวกเขา และ @ThreadReaderApp ช่วยให้คุณอ่านและบันทึกชุดข้อความเหล่านี้ได้ง่ายมาก

ในการเริ่มต้น ให้ตอบกลับทวีตของเธรดและพูดถึง @threaderapp ด้วยคีย์เวิร์ด “unroll” และพวกเขาสร้างหน้าเดียวที่มีทวีตทั้งหมดเรียงตามลำดับเวลา บล็อกโพสต์ใคร?

ดูเพิ่มเติมที่: ค้นหา Twitter อย่างมืออาชีพ

จับภาพหน้าจอด้วย @pikaso_me

ตอบกลับทวีตด้วยคำว่า “สกรีนช็อตนี้” และระบุ @pikaso_me ในการตอบกลับ คุณจะได้รับทวีตตอบกลับพร้อมภาพหน้าจอของทวีตต้นฉบับ

บอท Twitter จับภาพในทวีต แต่คุณยังสามารถใช้ Screenshot Guru สำหรับสิ่งนั้นได้

ดาวน์โหลดวิดีโอด้วย @DownloaderBot

คุณสามารถดาวน์โหลดวิดีโอหรือภาพ GIF จากทวีตได้อย่างง่ายดายด้วยความช่วยเหลือของบอท Twitter

พูดถึง @DownloaderBot ในการตอบกลับทวีตใดๆ ที่มีทั้งวิดีโอหรือรูปภาพ gif และคุณจะได้รับคำตอบพร้อมลิงก์โดยตรงเพื่อดาวน์โหลดสื่อ

Twitter เช่น YouTube อาจมีความสัมพันธ์ระหว่างความรักและความเกลียดชังกับบอทที่อนุญาตให้ดาวน์โหลดวิดีโอจากแพลตฟอร์มของพวกเขา ดังนั้นจึงควรบุ๊กมาร์กทางเลือกอื่นอยู่เสมอ มี @GetVideoBot , @SendVIDBot และ @Get_This_V

ดูเพิ่มเติมที่: สร้าง Twitter Bots ของคุณเอง

บอท Twitter ที่มีประโยชน์ที่สุด

Useful Twitter Bots

ตั้งการช่วยเตือนด้วย @RemindMe_OfThis

บอท Twitter แบบโอเพ่นซอร์สที่ให้คุณตั้งค่าการเตือนความจำสำหรับทวีตสาธารณะได้อย่างง่ายดาย พูดถึง @RemindMe_OfThis ในการตอบกลับทวีตใดๆ และระบุเวลาเป็นภาษาอังกฤษตามธรรมชาติเมื่อคุณต้องการเตือนทวีตนั้น

คุณสามารถพูดสิ่งต่างๆ เช่น in 2 days หรือ in 12 hours หรือ next week หรือแม้แต่ in 5 years ตรวจสอบแหล่งที่มาบน Github

บันทึกเธรด Twitter ด้วย @ThreadReaderApp

gurus ใน Twitter พบว่าชุดข้อความเป็นวิธีที่ดีที่สุดในการขยายขอบเขตการเข้าถึงทวีตของพวกเขา และ @ThreadReaderApp ช่วยให้คุณอ่านและบันทึกชุดข้อความเหล่านี้ได้ง่ายมาก

ในการเริ่มต้น ให้ตอบกลับทวีตของเธรดและพูดถึง @threaderapp ด้วยคีย์เวิร์ด “unroll” และพวกเขาสร้างหน้าเดียวที่มีทวีตทั้งหมดเรียงตามลำดับเวลา บล็อกโพสต์ใคร?

ดูเพิ่มเติมที่: ค้นหา Twitter อย่างมืออาชีพ

จับภาพหน้าจอด้วย @pikaso_me

ตอบกลับทวีตด้วยคำว่า “สกรีนช็อตนี้” และระบุ @pikaso_me ในการตอบกลับ คุณจะได้รับทวีตตอบกลับพร้อมภาพหน้าจอของทวีตต้นฉบับ

บอท Twitter จับภาพในทวีต แต่คุณยังสามารถใช้ Screenshot Guru สำหรับสิ่งนั้นได้

ดาวน์โหลดวิดีโอด้วย @DownloaderBot

คุณสามารถดาวน์โหลดวิดีโอหรือภาพ GIF จากทวีตได้อย่างง่ายดายด้วยความช่วยเหลือของบอท Twitter

พูดถึง @DownloaderBot ในการตอบกลับทวีตใดๆ ที่มีทั้งวิดีโอหรือรูปภาพ gif และคุณจะได้รับคำตอบพร้อมลิงก์โดยตรงเพื่อดาวน์โหลดสื่อ

Twitter เช่น YouTube อาจมีความสัมพันธ์ระหว่างความรักและความเกลียดชังกับบอทที่อนุญาตให้ดาวน์โหลดวิดีโอจากแพลตฟอร์มของพวกเขา ดังนั้นจึงควรบุ๊กมาร์กทางเลือกอื่นอยู่เสมอ มี @GetVideoBot , @SendVIDBot และ @Get_This_V

ดูเพิ่มเติมที่: สร้าง Twitter Bots ของคุณเอง