Apps Script สามารถเชื่อมต่อกับฐานข้อมูลภายนอกผ่านบริการ JDBC ซึ่งเป็น Wrapper รอบเทคโนโลยี Java Database Connectivity มาตรฐาน บริการ JDBC รองรับฐานข้อมูล Google Cloud SQL สำหรับ MySQL, MySQL, Microsoft SQL Server และ Oracle
หากต้องการอัปเดตฐานข้อมูลภายนอกด้วย JDBC สคริปต์ต้องเปิดการเชื่อมต่อกับฐานข้อมูล แล้วทำการเปลี่ยนแปลงโดยส่งคำสั่ง SQL
ฐานข้อมูล Google Cloud SQL
Google Cloud SQL ช่วยให้คุณสร้างฐานข้อมูลเชิงสัมพันธ์ที่อยู่ในระบบคลาวด์ของ Google ได้ โปรดทราบว่า Cloud SQL อาจมีการเรียกเก็บเงินตามการใช้งานของคุณ
คุณสร้างอินสแตนซ์ Google Cloud SQL ได้โดยทำตามขั้นตอนที่ระบุไว้ในการเริ่มต้นใช้งาน Cloud SQL
การสร้างการเชื่อมต่อ Google Cloud SQL
การสร้างการเชื่อมต่อกับฐานข้อมูล Google Cloud SQL โดยใช้บริการ JDBC ของ Apps Script ทำได้ 2 วิธีดังนี้
- (แนะนำ) การเชื่อมต่อโดยใช้ Jdbc.getCloudSqlConnection(url)
- การเชื่อมต่อโดยใช้ Jdbc.getConnection(url)
โดยจะอธิบายวิธีการเหล่านี้ด้านล่าง ทั้ง 2 วิธีใช้ได้ แต่ในวิธีที่ 2 คุณต้องให้สิทธิ์ช่วง IP ชุดหนึ่งเพื่อเข้าถึงฐานข้อมูล
ใช้ Jdbc.getCloudSqlConnection(url) (แนะนำ)
เมธอดนี้สร้างการเชื่อมต่อกับอินสแตนซ์ Google Cloud SQL MySQL โดยใช้เมธอด Jdbc.getCloudSqlConnection(url)
URL ของฐานข้อมูลมีรูปแบบเป็น jdbc:google:mysql://subname
โดยที่ subname
คือชื่อการเชื่อมต่ออินสแตนซ์ MySQL
ที่แสดงในหน้าภาพรวมของอินสแตนซ์ Cloud SQL ใน
Google Cloud Console
หากต้องการเชื่อมต่อกับ SQL Server ใน Cloud SQL โปรดดู Jdbc.getConnection(url)
การใช้ Jdbc.getConnection(url)
หากต้องการใช้วิธีนี้ คุณต้องให้สิทธิ์ช่วงที่อยู่ IP ของ Classless Inter-Domain Routing (CIDR) บางช่วง เพื่อให้เซิร์ฟเวอร์ของ Apps Script เชื่อมต่อกับฐานข้อมูลได้ ก่อนเรียกใช้สคริปต์ ให้ทำตามขั้นตอนต่อไปนี้
ในอินสแตนซ์ Google Cloud SQL ให้ให้สิทธิ์ช่วง IP ทีละช่วงจากแหล่งข้อมูลนี้
คัดลอก URL ที่กำหนดให้กับฐานข้อมูลของคุณ โดย URL ควรมีรูปแบบ
jdbc:mysql:subname
เมื่อให้สิทธิ์ช่วง IP เหล่านี้แล้ว คุณจะสร้างการเชื่อมต่อกับอินสแตนซ์ Google Cloud SQL ได้โดยใช้วิธีการ Jdbc.getConnection(url) วิธีการใดวิธีการหนึ่งและ URL ที่คัดลอกไว้ข้างต้น
ฐานข้อมูลอื่นๆ
หากมีฐานข้อมูล MySQL, Microsoft SQL Server หรือ Oracle อยู่แล้ว คุณจะเชื่อมต่อกับฐานข้อมูลดังกล่าวผ่านบริการ JDBC ของ Apps Script ได้
สร้างการเชื่อมต่อฐานข้อมูลอื่นๆ
หากต้องการสร้างการเชื่อมต่อฐานข้อมูลโดยใช้ JDBC service ของ Apps Script คุณต้องให้สิทธิ์ช่วง IP จากแหล่งข้อมูลนี้ในการตั้งค่าฐานข้อมูล
เมื่อสร้างรายการที่อนุญาตเหล่านี้แล้ว คุณจะสร้างการเชื่อมต่อกับฐานข้อมูลได้ โดยใช้วิธีการใดวิธีการหนึ่งของ Jdbc.getConnection(url) และ URL ของฐานข้อมูล
โค้ดตัวอย่าง
โค้ดตัวอย่างด้านล่างนี้ถือว่าคุณกำลังเชื่อมต่อกับฐานข้อมูล Google Cloud SQL และสร้างการเชื่อมต่อฐานข้อมูลโดยใช้เมธอด Jdbc.getCloudSqlConnection(url) สำหรับฐานข้อมูลอื่นๆ คุณต้องใช้เมธอด Jdbc.getConnection(url) เพื่อสร้างการเชื่อมต่อฐานข้อมูล
ดูข้อมูลเพิ่มเติมเกี่ยวกับเมธอด JDBC ได้ที่เอกสารประกอบ Java สำหรับ JDBC
สร้างฐานข้อมูล ผู้ใช้ และตาราง
นักพัฒนาซอฟต์แวร์ส่วนใหญ่ใช้เครื่องมือบรรทัดคำสั่ง MySQL เพื่อ
สร้างฐานข้อมูล ผู้ใช้ และตาราง อย่างไรก็ตาม คุณสามารถทำสิ่งเดียวกันนี้ใน Apps Script ได้ตามที่แสดงด้านล่าง คุณควรสร้างผู้ใช้รายอื่นอย่างน้อย 1 รายเพื่อให้สคริปต์ไม่ต้องเชื่อมต่อกับฐานข้อมูลในฐานะ root
เสมอไป
เขียนไปยังฐานข้อมูล
ตัวอย่างด้านล่างแสดงวิธีเขียนระเบียนเดียวลงในฐานข้อมูล รวมถึงกลุ่มระเบียน 500 รายการ การประมวลผลแบบเป็นชุดมีความสำคัญอย่างยิ่งสำหรับการดำเนินการแบบกลุ่ม
นอกจากนี้ โปรดสังเกตการใช้คำสั่งที่กำหนดพารามิเตอร์ ซึ่งตัวแปรจะ
ระบุด้วย ?
หากต้องการป้องกันการโจมตีด้วยการแทรก SQL คุณควรใช้คำสั่งที่มีพารามิเตอร์เพื่อหลีกเลี่ยงข้อมูลทั้งหมดที่ผู้ใช้ระบุ
อ่านจากฐานข้อมูล
ตัวอย่างนี้แสดงวิธีอ่านระเบียนจำนวนมากจากฐานข้อมูล โดยวนซ้ำชุดผลลัพธ์ตามที่จำเป็น
การปิดการเชื่อมต่อ
การเชื่อมต่อ JDBC จะปิดโดยอัตโนมัติเมื่อสคริปต์ทำงานเสร็จ (โปรดทราบว่าการเรียกใช้ฟังก์ชัน google.script.run
ครั้งเดียวถือเป็นการดำเนินการที่เสร็จสมบูรณ์ แม้ว่าหน้าบริการ HTML ที่ทำการเรียกใช้จะยังเปิดอยู่ก็ตาม)
อย่างไรก็ตาม หากคุณทราบว่าการเชื่อมต่อ คำสั่ง หรือชุดผลลัพธ์เสร็จสิ้นแล้ว
ก่อนที่สคริปต์จะสิ้นสุด คุณควรปิดด้วยตนเองโดยเรียกใช้
JdbcConnection.close()
JdbcStatement.close()
หรือ
JdbcResultSet.close()
การแสดงกล่องโต้ตอบการแจ้งเตือนหรือข้อความแจ้ง จะปิดการเชื่อมต่อ JDBC ที่เปิดอยู่ด้วย แต่ UI การแสดงอื่นๆ เช่น เมนูหรือกล่องโต้ตอบที่กำหนดเอง และแถบด้านข้างที่มีเนื้อหาที่กำหนดเอง จะไม่ได้รับผลกระทบ
Google, Google Workspace รวมถึงเครื่องหมายและโลโก้ที่เกี่ยวข้องเป็นเครื่องหมายการค้าของ Google LLC ชื่อบริษัทและชื่อผลิตภัณฑ์อื่นๆ ทั้งหมดเป็นเครื่องหมายการค้าของบริษัทที่เกี่ยวข้อง