Tag: Google Apps Script

  • เปลี่ยน Q&A รูปแบบหน้าเอกสาร ให้เป็นหน้าเว็บกัน

    การทำบันทึก Q&A ในรูปแบบกระดาษให้อยู่ในหน้าเว็บ จากงานที่เราทำอยู่เป็นงานถามตอบการใช้งานระบบ ซึ่งบางระบบจะผู้ใช้งานจะเป็นคนใหม่เสมอ ๆ เช่น ระบบรับสมัครนักศึกษา (Admission) ระบบข้อมูลพื้นฐานนักศึกษา เป็นต้น โดยได้รวบรวมคำถามที่พบบ่อย และจัดทำในรูปแบบเอกสาร word ธรรมดา ในวันนี้เราจะมาทำให้อยู่ในรูปแบบหน้า web เพื่อให้ง่ายต่อการอ่านของผู้ใช้กันค่ะ

    มาดูขั้นตอนกันเลย

    • ไปที่ Google Drive > +New > More > Google Apps Script แล้วเขียน code ดังรูป

    • จากนั้นเพิ่มหน้า index.html แล้วคัดลอก Code ตามลิงค์
      https://www.api-wat.com/2022/03/blog-post.html
    • แก้ไขให้เป็น FAQ ของเรา
    • จากนั้นบันทึกแล้วไปที่ Deploy > New development > Select type เป็น Web app > Who has access เลือก Anyone > Deploy > Done
    • จากนั้นไปที่ Deploy > Test deployments > คลิกลิงค์ที่ URL ก็จะแสดงผลตามที่ต้องการ ดังรูป
    • จากนั้นไปที่ Manage deployments ที่ URL Copy แล้วนำลิงค์นั้นไปแปะตามที่เราต้องการ

    ลองนำไปเล่นกันดูนะ ^_^

  • Tabulator ในการดึงข้อมูลจาก google sheet

    ต้องการนำข้อมูลใน google sheet ไปแสดงบนหน้าเว็บ ด้วย Tabulator ตัวอย่างข้อมูลดังนี้ค่ะ

    จากนั้นให้เราไปสร้าง Apps Script กันค่ะ สร้าง function และสร้าง page index

    จากนั้นค้นใน google ว่า tabulator > คลิก Documentation > คลิก Quick Start > ที่ Install Sources > CDN จากนั้นให้ Copy

    ไปวางที่บรรทัดที่ 4 หน้า index.html ดังรูป

    จากนั้นให้ Copy

    จะได้ code หน้า index.html ดังนี้

    จากนั้นคลิกปุ่ม Deploy > New deployment ที่ setting > Web app ที่ Who has access เลือก Anyone > กดปุ่ม Deploy > Done

    จากนั้นคลิกปุ่ม Test deployment > คลิกที่ URL จะได้ผลลัพธ์ดังนี้ เป็นผลลัพธ์ตาม code ตัวอย่างที่เรา copy มาจากเว็บ Tabulator ค่ะ

    คราวนี้มาทำให้ดึงข้อมูลจาก google sheet กันดีกว่าค่ะ ไปที่ Code.gs กันเล้ย ตามนี้จ้า

    จากนั้นไปที่ index.html จะดึงค่าจาก google sheet หล่ะ

    จากนั้นลอง Refresh หน้าจอดู

    ลองนำไปเล่นกันดูนะคะ ^_^

  • สร้างไฟล์ PDF จาก Google sheet ที่ใส่รูปได้ ด้วย Library PdfService

    สมมติเรามีแบบสอบถามที่เก็บรูปภาพของผู้กรอกด้วย และเราต้องการให้มัน Gen ข้อมูลที่กรอกเป็น pdf เก็บไว้ แนว ๆ ทำเป็นใบสมัครออกมา มาดูขั้นตอนวิธีทำกันเลย บอกเลยว่าไม่ยาก!!! เริ่มกันเลย

    1. ไปที่ Google Drive ของเรา สร้าง Folder จัดเก็บงาน ในที่นี่ชื่อ PDF Test

    2.สร้าง Form ขึ้นมา 1 form เก็บข้อมูล ดังรูป ชื่อ สกุล อีเมล เบอร์โทร รูป (ทำเป็นอัปโหลดไฟล์)

    3.คลิกแสดงตัวอย่างที่ลูกตา แล้วลองใส่ข้อมูลทดสอบ

    4.ดูตัวอย่างข้อมูลที่แท็บการตอบกลับ

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

    จากนั้นนำข้อมูลนี้ไปทำ pdf ได้อย่างไร

    1.ให้ไปที่เมนูเครื่องมือ > โปรแกรมแก้ไขสคริปต์ > ทรัพยากร > ไลบรารี ที่ Add a library ให้ใส่ 1iePjnglUzelAuJJb-QykRcUUWYBSKiNGUWVljnNe03G9zWzSUGIRWLXa แล้วกดปุ่มเพิ่ม

    2.เราจะเห็น PdfService ให้ระบุเป็น Version ล่าสุด จากนั้นกดปุ่ม บันทึก

    ในที่นี้จะขอใช้ google slide เป็น Templete ในการออก PDF

    1.กลับไปที่ Google drive ที่ folder ที่เราได้สร้างไว้คือ PDF Test ให้คลิกขวา > Google สไลด์

    2. ตั้งค่าหน้า slide เป็นแนวตั้ง A4 ไปที่ ไฟล์ > ตั้งค่าหน้ากระดาษ > กำหนดเอง 21 * 29.7 cm

    3.เราต้องการออก PDF ที่เก็บรูปภาพด้วย เพราะมีการตอบรูปภาพเข้ามา ไปที่แทรก > รูปภาพ > อัปโหลดจากคอมพิวเตอร์ จะได้เป็นรูปที่เป็นแม่แบบ เราก็จัดวางตามที่เราต้องการว่าจะให้วางไว้ตรงส่วนไหน ขนาดกว้าง ยาวเท่าไหร่แล้วแต่เรากำหนด

    4.จากนั้นคลิกที่กล่องข้อความ สร้างตามรูป โดยในปีกกา {} ต้องเป็นชื่อเดียวกับฟิลด์ใน google sheet

    5.จากนั้นคลิกที่รูป ขวา > ข้อความแสดงแทน > ที่ชื่อเรื่องใส่ชื่อฟิลด์ที่ตรงกับช่องที่มีรูปภาพตามใน google sheet จากตัวอย่างในที่นี้จะเป็นคำว่า “รูปภาพ” จากนั้นคลิกปุ่มตกลง

    7. ไปที่ Google drive สร้าง folder ใหม่อีกอัน ซึ่งจะให้ไฟล์ PDF ถูกจัดเก็บเข้ามาในนี้ และ folder ที่อัปโหลดรูปในแบบสอบถาม PDF Test (File responses) จะต้องแชร์ folder นี้ด้วย (คลิกขวา แชร์ ทุกคนที่มีลิงค์) ไม่อย่างนั้น script จะ error

    ไปที่ Google drive สร้าง folder ใหม่อีกอัน ซึ่งจะให้ไฟล์ PDF จะถูกเก็บเข้ามาในนี้ และ folder ที่อัปโหลดรูปในแบบสอบถามจะให้มาอยู่ใน folder PDF Test ที่เราได้สร้างไว้ตั้งแต่ตอนแรกสุด จะต้องแชร์ด้วย folder นี้ (คลิกขวา แชร์ ทุกคนที่มีลิงค์) ไม่อย่างไร script จะ error

    จากนั้นเรามาเขียน code กันเล็กน้อย

    จากรูป

    1.เป็น ID ของ google form ให้คัดลอกมาหลัง /d จนก่อนถึง /edit

    2.เป็น ID ของ google slide ให้คัดลอกมาหลัง /d จนก่อนถึง /edit

    3.เป็นชื่อ folder ที่จะเก็บไฟล์ PDF ที่ google สร้างอัตโนมัติให้เมื่อรัน code

    4.ชื่อของแผ่นงานใน google form

    5.ชื่อฟิลด์ที่เก็บรูปภาพตามใน google sheet ของเราใช้คำว่า “รูปภาพ”

    6.ต้องการให้ไฟล์ PDF แต่ละไฟล์มีชื่อว่าอะไร ในที่นี่ให้แสดงฟิลด์ชื่อและสกุล (ใส่ให้ตรงกับฟิลด์ที่เรากำหนดไว้) เสร็จแล้วอย่าลืมกดปุ่ม บันทึก

                จากนั้นมารันดูกันว่ามันจะสร้าง PDF ให้เรายังไง กดปุ่ม Play > ตรวจสอบสิทธิ์ > คลิกที่อีเมลของเรา > ขั้นสูง > ไปที่ PDF Test(ไม่ปลอดภัย) > อนุญาต จะแสดงข้อความว่า “Running function runPDF”

                รันผ่านเรียบร้อยดูจากบันทึกการดำเนินการด้านล่าง จากนั้นเราไปดู folder PDF-test กันเลย ชื่อไฟล์จะตามที่เราให้ดึงฟิลด์ชื่อสกุล

                เมื่อคลิกดูก็จะได้ไฟล์ PDF ที่มีข้อมูลตาม Google slide ที่เราได้ทำไว้ ดังรูป

    ลองกรอกข้อมูลเพิ่มอีกสักคน แล้วรัน script อีกครั้ง จากนั้นไปดูผลลัพธ์กัน

    เราสามารถสร้าง Trigger ให้มันทำงานอัตโนมัติ หรือสร้างเป็นปุ่มที่เรียก function นี้ได้ค่ะ

  • วิธีแจ้งเตือนจาก Google Forms เข้า LINE

    ต้องยอมรับว่า ปัจจุบันพฤติกรรมผู้ใช้ “ทั่วไป” จะเปิด LINE อ่านบ่อย และเร็วกว่าการเปิดอ่าน Email

    ต่อไปนี้ เป็นวิธีการ ตั้งค่าที่ Google Forms ว่า เมื่อมีคน Submit แบบฟอร์มมา ให้มา Alert ที่ LINE ของเรา หรือ ส่งเข้า LINE Group ก็ได้ โดยอาศัยความสามารถของ Google App Scripts ที่เรียก REST API ของ LINE

    สร้าง หรือ แก้ไข Google Forms ที่ต้องการ

    จากนั้น ไปที่ “More” หรือ ปุ่มสามจุดแนวตั้งด้านขวามือบน แล้ว คลิกที่ Script Editor

    จากนั้น ใส่ Google App Script

    ตามนี้ ในที่นี้ ตั้งชื่อ Function คือ sendLineNotification

    **** อย่าลืมเปลี่ยน YOUR-TOKEN-GO-HERE ที่จะได้จากขั้นตอนต่อไป ****

    function sendLineNotification(e)
    {
      // เลือกใช้ Form ที่กำลังใช้งานนี้
      var form = FormApp.getActiveForm() 
      
      // รับค่าจาก Form Response
      var itemResponses = e.response.getItemResponses();  
      
      // ข้อความที่แสดงในบรรทัดแรก
      var result="New Response" 
      
      // Loop แต่ละข้อคำถาม และ คำตอบ
      for (var i = 0; i < itemResponses.length; i++) {
        var itemResponse = itemResponses[i];
        
        // ต่อข้อความจากทุกคำถาม เป็นข้อความยาวข้อความเดียว
        // getTitle คือ Question Title แต่ละข้อ
        // getResponse คือ ถามตอบที่ส่งมา
        result += '\n'+itemResponse.getItem().getTitle()+': '+itemResponse.getResponse()
      }
      
      // สร้างรูปแบบที่จะส่งไปให้ LINE -- ในที่นี้คือข้อความอย่างเดียว
      var formData = {
        'message': result,
      };
      
      // LIINE token : ได้มาจาก https://notify-bot.line.me/my/
      // ในตัวอย่างนี้ เป็นแบบ Personal
      var token = 'YOUR-TOKEN-GO-HERE'
      
      // POST แบบใน Token ใน Header ไปยัง LINE Notify REST API
      var options = {
        'method' : 'post',
        'headers' : {'Authorization': "Bearer "+token},
        'contentType': 'application/x-www-form-urlencoded',
        'payload' : formData
      }
      UrlFetchApp.fetch('https://notify-api.line.me/api/notify', options)
    }
    

    ตั้งชื่อ Project, Save แล้ว Run

    ** อย่าลืม ตั้งชื่อ Project แล้ว Save ด้วย

    จากนั้น กดปุ่ม Run เพื่อให้เกิดการขอ Authorization ตาม OAuth Scope

    ซึ่งจะเจอ Error นี้ ก็ไม่เป็นไร (เพราะไม่มี ข้อมูลส่งมาจริง ๆ นั่นเอง) ให้กด Dismiss ไป

    ไปตั้ง Trigger

    ไปที่ เมนู Edit > Current project’s triggers

    ตั้งค่า Trigger ให้ทำงานทันทีที่มีการ Submit แบบฟอร์ม

    Trigger คือการตั้งค่าให้ Script นี้ทำงานอัตโนมัติ เมื่อมีการ Submit แบบฟอร์ม

    คลิก Add Trigger แล้วเลือก Function “sendLineNotification” เลือก “on form submit” และ “Notify me immediately” เพื่อให้เมื่อมีการ Submit แบบฟอร์ม ก็จะแจ้งทาง LINE ทันที

    จากนั้น กดปุ่ม Save

    ผลที่ได้คืออย่างนี้

    ขั้นตอนการขอ LINE Token

    ไปที่เว็บไซต์

    https://notify-bot.line.me/my/

    แล้ว Login ด้วย LINE Account ของท่าน

    จากนั้น คลิกปุ่ม Generate token

    ตั้งชื่อ และ เลือกว่าจะ Notify ไปที่ใด เราสามารถเลือกได้ว่า

    • ให้ Notify ไปที่เราคนเดียว
    • ให้ Notify ไปยัง Group Chat

    *** เราต้องเพิ่ม Line Notify เป็นเพื่อนก่อน และ Invite เข้าไปใน Group Chat นั้น ๆ ด้วย

    จากนั้น คลิกปุ่ม Generate Token

    ก็จะได้ Token ให้คลิกปุ่ม Copy แล้วคลิก Close

    จากนั้น นำไปแทนที่ YOUR-TOKEN-GO-HERE ใน Google App Script ข้างต้น แล้ว Save

    เราสามารถสร้าง Token สำหรับใช้งานในกิจกรรมที่แตกต่างกันได้ หลาย ๆ อัน เช่น อาจจะมี ต้องการให้แจ้งเตือนในกลุ่มที่แตกต่างกันออกไป เป็นต้น

    เมื่อมีคน Submit แบบฟอร์ม ก็จะมี LINE แจ้งเตือน

    อันนี้ แบบ Basic ง่าย ๆ เดี๋ยวค่อยมาเล่าการใช้งานที่ซับซ้อนกว่านี้

    หวังว่าจะเป็นประโยชน์ครับ

  • การแสดงผลจำนวน Quota การส่งอีเมลที่ยังเหลืออยู่ในรอบ 24 ชั่วโมง

    1. ปิด Google Sheets : GASWS1
    2. เมนู Tools > Script Editor…
    3. เมนู File > New > Script File
      ตั้งชื่อ: myscript6
    4. สร้าง function remainDailQuota() ตามนี้
      function remainDailQuota() {
       // https://developers.google.com/apps-script/guides/services/quotas
       var emailQuotaRemaining = MailApp.getRemainingDailyQuota();
       var emailaddress=Session.getActiveUser().getEmail();
       var subject="Email Quota Remaining";
       MailApp.sendEmail( emailaddress, 
       subject ,
       "คุณเหลือ Quota การส่งอีเมลอีก " + emailQuotaRemaining + " ฉบับ ในรอบ 24 ชั่วโมง"
       ); 
      }
    5. เมนู File > Save หรือ กดปุ่ม Ctrl+s
    6. เมนู Run > remainDailQuota
  • การส่งไฟล์แบบ Top Secret!

    1. ปิด Google Sheets : GASWS1
    2. เมนู Tools > Script Editor…
    3. เมนู File > New > Script File
      ตั้งชื่อ: myscript6
    4. สร้าง function MailMerge4() ตามนี้
      function MailMerge4() {
       var ss = SpreadsheetApp.getActiveSpreadsheet(),
       SalarySheet=SpreadsheetApp.setActiveSheet(ss.getSheetByName("Salary")), 
       TemplateID='1bjpQnJikYMGYNaJQhetpZpkHyjI7iqBqDufprzMSo4k', 
       header = "A1:G1",
       data="A2:G6", 
       dataRows = SalarySheet.getRange(data).getValues(),
       headerRow = SalarySheet.getRange(header).getValues(),
       numColumns = SalarySheet.getRange(header).getNumColumns(),
       
       emailaddress= "",
       subject = "",
       docUrl = ""; 
      
       for (var i=0 ; i < dataRows.length ; i++) {
       emailText="";
       subject = "[ลับ] กองคลัง : แจ้งการโอนเงินให้คุณ " + dataRows[i][0] + " " + dataRows[i][1];
       var id =DriveApp.getFileById(TemplateID).makeCopy(subject).getId(),
       doc=DocumentApp.openById(id),
       docBody=doc.getBody();
       for (var j = 0 ; j < numColumns -1 ; j++) { 
       docBody.replaceText('{' + headerRow[0][j] + '}' , dataRows[i][j]); 
       } 
       
       emailaddress=dataRows[i][2];
       
       doc.addViewer( emailaddress);
       docUrl=doc.getUrl();
       doc.saveAndClose();
       
       var attachment = DocumentApp.openById(id);
       MailApp.sendEmail( emailaddress, 
       subject ,
       "เปิดอ่านเอกสารลับได้ที่ \n" + docUrl
       ); 
       try { 
      
       dataRows[i][numColumns-1] = new Date(); 
       } catch (e) {
       
       dataRows[i][numColumns-1] = e.message;
       } 
       }
       
       SalarySheet.getRange(data).setValues(dataRows);
      }
    5. เมนู File > Save หรือ กดปุ่ม Ctrl+s
    6. เมนู Run > MailMerge4
    7. สร้าง function MailMerge5() ตามนี้
      function MailMerge5() {
       var ss = SpreadsheetApp.getActiveSpreadsheet(),
       SalarySheet=SpreadsheetApp.setActiveSheet(ss.getSheetByName("Salary")), 
       TemplateID='1WzzAwF5cDtQD0kcrLKRdP0ZO6-6MCqc_VXRUxzgq_gI', 
       header = "A1:H1",
       data="A2:H6", 
       dataRows = SalarySheet.getRange(data).getValues(),
       headerRow = SalarySheet.getRange(header).getValues(),
       numColumns = SalarySheet.getRange(header).getNumColumns(),
       
       emailaddress= "",
       subject = "",
       docUrl = ""; 
      
       for (var i=0 ; i < dataRows.length ; i++) {
       emailText="";
       subject = "[ลับสุดยอดดดดด] กองคลัง : แจ้งเอกสารลับให้คุณ " + dataRows[i][0] + " " + dataRows[i][1];
       var id =DriveApp.getFileById(TemplateID).makeCopy(subject).getId(),
       doc=DocumentApp.openById(id),
       docBody=doc.getBody();
       for (var j = 0 ; j < numColumns -1 ; j++) { 
       docBody.replaceText('{' + headerRow[0][j] + '}' , dataRows[i][j]); 
       } 
       
       emailaddress=dataRows[i][2];
       
       doc.addViewer( emailaddress);
       docUrl=doc.getUrl();
       doc.saveAndClose();
       
       var now = new Date();
       
       
       MailApp.sendEmail( emailaddress, 
       subject ,
       "เปิดอ่านเอกสารลับสุดยอดได้ที่ \n" + docUrl
       ); 
       try { 
       
       dataRows[i][numColumns-2] = id; 
       dataRows[i][numColumns-1] = now; 
       } catch (e) {
       
       dataRows[i][numColumns-1] = e.message;
       } 
       }
       
       SalarySheet.getRange(data).setValues(dataRows);
       ScriptApp.newTrigger('destroySecretDocument')
       .timeBased()
       .after(2 * 60 * 1000)
       .create();
       
      }
    8. สร้าง function destroySecretDocument() ตามนี้
      function destroySecretDocument() {
       var ss = SpreadsheetApp.getActiveSpreadsheet(),
       SalarySheet=SpreadsheetApp.setActiveSheet(ss.getSheetByName("Salary")),
       DataRange=SalarySheet.getDataRange().getValues();
       
       for(var i=1; i< DataRange.length; i++){
       var id=DataRange[i][6];
       var emailAddress=DataRange[i][2];
       DocumentApp.openById(id).removeEditor(emailAddress);
       DriveApp.removeFile(DriveApp.getFileById(id));
       }
      }
    9. เมนู File > Save หรือ กดปุ่ม Ctrl+s
      เมนู Run > MailMerge5
  • การส่ง email ถึงผู้รับตามที่กำหนด พร้อมแนบข้อความ/ไฟล์ที่ต้องการ

    1. ปิด Google Sheets : GASWS1
    2. เมนู Tools > Script Editor…
    3. เมนู File > New > Script File
      ตั้งชื่อ: myscript6
    4. สร้าง function MailMerge3() ตามนี้
      function MailMerge3() {
       var ss = SpreadsheetApp.getActiveSpreadsheet(),
       SalarySheet=SpreadsheetApp.setActiveSheet(ss.getSheetByName("Salary")), 
       TemplateID='1bjpQnJikYMGYNaJQhetpZpkHyjI7iqBqDufprzMSo4k', 
       header = "A1:G1",
       data="A2:G6", 
       dataRows = SalarySheet.getRange(data).getValues(),
       headerRow = SalarySheet.getRange(header).getValues(),
       numColumns = SalarySheet.getRange(header).getNumColumns(),
       emailText = ""; 
      
       for (var i=0 ; i < dataRows.length ; i++) {
       emailText="";
       var id =DriveApp.getFileById(TemplateID).makeCopy("กองคลัง : แจ้งการโอนเงินให้คุณ " + dataRows[i][0] + " " + dataRows[i][1]).getId(),
       doc=DocumentApp.openById(id),
       docBody=doc.getBody();
       for (var j = 0 ; j < numColumns -1 ; j++) { 
       docBody.replaceText('{' + headerRow[0][j] + '}' , dataRows[i][j]); 
       } 
       emailText=docBody.getText();
       doc.saveAndClose();
       
       
       var emailaddress=dataRows[i][2],
       subject = "กองคลัง : แจ้งการโอนเงินให้คุณ " + dataRows[i][0] + " " + dataRows[i][1],
       attachment = DocumentApp.openById(id);
       MailApp.sendEmail( emailaddress, 
       subject ,
       emailText, 
       {
       attachments: [attachment.getAs(MimeType.PDF)]
       }
       ); 
       try { 
      
       dataRows[i][numColumns-1] = new Date(); 
       } catch (e) {
       
       dataRows[i][numColumns-1] = e.message;
       } 
       }
       
       SalarySheet.getRange(data).setValues(dataRows);
      }
    5. เมนู File > Save หรือ กดปุ่ม Ctrl+s
    6. เมนู Run > MailMerge3
  • การสร้างไฟล์ PDF จากข้อความที่ต้องการ

    1. เปิด Google Sheets : GASWS1
    2. เมนู Tools > Script Editor…
    3. เมนู File > New > Script File
      ตั้งชื่อ: myscript6
    4. สร้าง function MailMerge2() ตามนี้
      function MailMerge2() {
       var ss = SpreadsheetApp.getActiveSpreadsheet(),
       SalarySheet=SpreadsheetApp.setActiveSheet(ss.getSheetByName("Salary")), 
       TemplateID='1bjpQnJikYMGYNaJQhetpZpkHyjI7iqBqDufprzMSo4k', 
       header = "A1:G1",
       data="A2:G6", 
       dataRows = SalarySheet.getRange(data).getValues(),
       headerRow = SalarySheet.getRange(header).getValues(),
       numColumns = SalarySheet.getRange(header).getNumColumns();
       
       
      
       for (var i=0 ; i < dataRows.length ; i++) {
       var id =DriveApp.getFileById(TemplateID).makeCopy("กองคลัง : แจ้งการโอนเงินให้คุณ " + dataRows[i][0] + " " + dataRows[i][1]).getId(),
       doc=DocumentApp.openById(id),
       docBody=doc.getBody();
       for (var j = 0 ; j < numColumns -1 ; j++) { 
       docBody.replaceText('{' + headerRow[0][j] + '}' , dataRows[i][j]); 
       } 
       doc.saveAndClose();
       
       var pdfFile = DriveApp.createFile(doc.getAs(MimeType.PDF));
       try { 
      
       dataRows[i][numColumns-1] = new Date(); 
       } catch (e) {
       
       dataRows[i][numColumns-1] = e.message;
       } 
       }
       
       SalarySheet.getRange(data).setValues(dataRows);
      }
    5. เมนู File > Save หรือ กดปุ่ม Ctrl+s
    6. เมนู Run > MailMerge2
  • แทนที่ข้อความ ด้วยค่าใน Google Sheets

    1. เปิด Google Sheets : GASWS1
    2. สร้าง Sheet ใหม่ ชื่อ “Salary”
    3. ใส่ข้อมูล
      A1 = “Firstname”
      B1=”Lastname”
      C1=”Email”
      D1=”SalaryDetail”
      E1=”Salary”
      F1=”TransferDate”
    4. จากนั้น ให้กรอกข้อมูลต่างๆ จำนวน 5 แถว ดังภาพ
      Capture
    5. สร้าง Sheet ใหม่ ชื่อ “Template”
    6. ใส่ข้อมูล
      A1: เรียน คุณ{Firstname} {Lastname}
      A2: จะมี {SalaryDetail} จำนวน {Salary} บาท โอนให้คุณในวันที่ {TransferDate}
      A3: จึงเรียนมาเพื่อทราบ
      A4: การเงิน
    7. เมนู Tools > Script Editor…
    8. เมนู File > New > Script File
      ตั้งชื่อ: myscript5
      เขียนโค๊ดตามนี้

      function MailMerge1() {
       var ss = SpreadsheetApp.getActiveSpreadsheet(),
       SalarySheet=SpreadsheetApp.setActiveSheet(ss.getSheetByName("Salary")),
       TemplateSheet=SpreadsheetApp.setActiveSheet(ss.getSheetByName("Template")),
       header = "A1:G1",
       data="A2:G6",
       template="A1:A4",
       dataRows = SalarySheet.getRange(data).getValues(),
       headerRow = SalarySheet.getRange(header).getValues(),
       numColumns = SalarySheet.getRange(header).getNumColumns(),
       templateRows= TemplateSheet.getRange(template).getValues();
       
       for (var i=0 ; i < dataRows.length ; i++) {
       var newText = templateRows[0][0] + "\n" + 
       "\t" + templateRows[1][0] + "\n" +
       "\t" + templateRows[2][0] + "\n" +
       templateRows[3][0] + "\n"; 
       for (var j = 0 ; j < numColumns -1 ; j++) { 
       newText = newText.replace('{' + headerRow[0][j] + '}', dataRows[i][j]); 
       }
       try { 
      
       dataRows[i][numColumns-1] = new Date(); 
       } catch (e) {
       
       dataRows[i][numColumns-1] = e.message;
       }
       
       Logger.log(newText);
       }
       
       
       SalarySheet.getRange(data).setValues(dataRows);
       
      }
    9. เมนู File > Save หรือ กดปุ่ม Ctrl+s
    10. เมนู Run > MailMerge1
    11. ดูผลได้ที่ เมนู View > Logs หรือ กดปุ่ม Ctrl+Enter