Category: Google Apps

  • การส่งไฟล์แบบ 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
  • วิธีกู้ไฟล์ที่ถูก Ransomware จับไปเรียกค่าไถ่

    Ransomware หรือ โปรแกรมเรียกค่าไถ่ไฟล์ต่างๆ โดยการเข้ารหัสไฟล์เหล่านั้น ทำให้ไม่สามารถเปิดใช้งานได้อีก นอกจากจะยอมเสียค่าไถ่ให้กับผู้ร้ายด้วยเงินสกุล Bitcoin โปรแกรมเหล่านี้จะมาจากการติดตั้ง หรือถูกหลอกให้ติดตั้ง ผ่านทางเว็บไซต์ “อโคจร” ต่างๆ Software เถื่อน ละเมิดลิขสิทธิ์ทั้งหลาย และที่มีบ่อยมากคือ มาจาก “จดหมายหลอกลวง (Phishing)” ซึ่งทำให้ติดเชื้อได้อย่างง่ายดาย

    ข้อมูลเพิ่มเติม

    https://www.thaicert.or.th/alerts/user/2015/al2015us001.html

    เมื่อติด หรือ โดนเรียกค่าไถ่ เรียกได้ว่า ยากมากหรือแทบเป็นไปไม่ได้ที่จะกู้คืนโดยการ Decrypt  หรือถอดรหัสกลับคืน

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

    แต่ยังมีวิธีการ “สำรองและกู้คืน” ที่ง่าย ปลอดภัย และแม้ว่าเครื่องคอมพิวเตอร์จะเสียหายอย่างไร ก็จะสามารถ “กู้คืนข้อมูลได้” นั่นคือการใช้งาน Google Drive ในการสำรองข้อมูล โดยผู้ที่มี Google Account หรือ Gmail สามารถใช้งานได้ทันที โดยมีพื้นที่ให้ 15 GB (รวมกับการเก็บ email) ส่วนผู้ใช้ในมหาวิทยาลัยสงขลานคริทนร์ จะได้ใช้ Google Apps for Education ซึ่งมีพื้นที่ในการจัดเก็บ “Unlimited” หรือไม่มีขีดจำกัดเลยทีเดียว (เบื้องต้นจะเห็นพื้นที่จัดเก็บ 10 TB — 10,000 GB)

    Google Drive เป็นพื้นที่จัดเก็บข้อมูลบนก้อนเมฆ หรือ Cloud Storage ผู้ใช้ของ Google Account สามารถเข้าถึงได้ที่ https://drive.google.com เมื่อทำการลงชื่อเข้าใช้งาน (Sign In)  แล้วก็จะสามารถมองเห็นข้อมูลบนระบบ สามารถสร้าง Folder และ Upload ไฟล์ขึ้นไปเก็บได้ และสามารถเข้าถึงได้จากทั้ง เครื่องคอมพิวเตอร์ และ Smartphone ได้จากทุกแห่งทั่วโลก ดังภาพที่ 1 (โดยต้องมีระบบ Internet เข้าถึงนะ)

    01-googledrivepsu

     

    ภาพที่ 1: Google Drive บนระบบ Google Apps for Education ของมหาวิทยาลัยสงขลานครินทร์

    ในที่นี้ จะแสดงวิธีการ สร้างโฟล์เดอร์ชื่อว่า “เอกสารสำคัญ” ไว้บน Google Drive เพื่อใช้ในการสำรองไฟล์สำคัญไว้ ขั้นตอนคือ คลิกที่ New > Folder แล้วตั้งชื่อว่า “เอกสารสำคัญ” แล้วคลิกปุ่ม Create ดังภาพที่ 2

    02-newfolder เอกสารสำคัญ

    ภาพที่ 2: สร้างโฟล์เดอร์ชื่อว่า “เอกสารสำคัญ” ไว้บน Google Drive

    ส่วนการทำงานเพื่อ Backup ข้อมูลบนเครื่องคอมพิวเตอร์ไปเก็บไว้บนระบบ Google Drive อัตโนมัติ ทำได้โดยติดตั้งโปรแกรม “Google Drive” บนเครื่องคอมพิวเตอร์ แล้วตั้งค่าให้ Sync ข้อมูลกับโฟลเดอร์ “MyGoogleDrive” ใน My Documents ของเครื่องคอมพิวเตอร์ ดังวิธีการต่อไปนี้

    1. Google Drive สามารถดาว์นโหลดได้จาก https://www.google.com/drive/download/
    2. เมื่อติดตั้งเรียบร้อยแล้วให้ลงชื่อเข้าใช้ และคลิก Next ไปเรื่อยๆ ดังภาพที่ 303-installgoogledrive
      ภาพที่ 3: คลิก “ถัดไป” จนถึงหน้าจอสุดท้าย
    3. หน้าจอสุดท้าย คลิก “การตั้งค่าขั้นสูง” ดังภาพที่ 404-advance
      ภาพที่ 4: คลิก “การตั้งค่าขั้นสูง”
    4. คลิก “เปลี่ยน” แล้วสร้าง MyGoogleDrive ไว้ใน My Documents ดังภาพที่ 506-MyGoogleDrive
      ภาพที่ 5: สร้าง MyGoogleDrive ไว้ใน My Documents
    5. ต่อไป เลือก “เลือกเฉพาะโฟล์เดอร์เหล่านี้”  แล้ว เอาเฉพาะ “เอกสารสำคัญ” แล้วคลิก “เริ่มการซิงค์” ดังภาพที่ 607-syncspecificfolder
      ภาพที่ 5: เลือกเฉพาะ “เอกสารสำคัญ”
    6. สักครู่ระบบก็จะทำการ Sync เมื่อเสร็จสิ้น จะได้ผลดังภาพที่ 608-syncsuccess
      ภาพที่ 6: Sync “เอกสารสำคัญ” เสร็จแล้ว

    ให้นำเอกสารสำคัญต่างๆมาใส่ไว้ใน “เอกสารสำคัญนี้” ระบบก็จะทำการ Sync ขึ้นไปบน Google Drive แล้ว และ การแก้ไขเปลี่ยนแปลงไฟล์ในโฟล์เดอร์นี้ จะถูกสำรองเอาไว้

    ต่อไป มาดูกันว่า เมื่อมีการแก้ไขไฟล์เอกสารชื่อ “doc1.docx” ระบบ Google Drive จะสำรองข้อมูลเอาไว้ให้ตลอด และสามารถกู้คืนรุ่นของเอกสารได้ ดังภาพที่ 7

    12-sequence

     

    ภาพที่ 7: แสดงเวลากับการแก้ไขข้อความ

    สิ่งที่ Google Drive สำรองไว้ให้ สามารถดูได้จากการ คลิกขวาที่ไฟล์นั้นๆ แล้วเลือก “Manage Version” ดังภาพที่ 8

    13-manageversion

    ภาพที่ 8: การเลือก Manage Versions

    จากนั้น สามารถหากต้องการย้อนเวลา ไปเอาไฟล์นี้ ขณะที่ยังมีข้อความและรูปภาพ ก็คลิกที่เวลา 14:56 แล้วเลือก Download ออกมาทับไฟล์เดิม หรือ เก็บไว้ที่อื่นบนเครื่องคอมพิวเตอร์ก็ได้ ดังภาพที่ 9

    14-restore1456

    ภาพที่ 9: เลือก Version 2 ที่บันทึกเมื่อเวลา 14:56 แล้ว download ไฟล์ออกมา

    ผลที่ได้คือ ไฟล์เดิมที่มีข้อความและภาพ ที่บันทึกเมื่อเวลา 14:56 ดังภาพที่่ 10

    09-doc1.docx

     

    ภาพที่ 10: ไฟล์ที่ถูกแก้ไขไปแล้ว ก็สามารถกู้กลับมาได้

    ในกรณีที่ไฟล์นี้ ถูก “ลบ” ทิ้ง ไม่ว่าจะโดยตั้งใจ หรือ ถูก Ransomware ลบทิ้งแล้วเหลือไว้แต่ไฟล์ที่เปิดไม่ได้ก็ตาม ดังภาพที่ 11  ก็สามารถกู้กลับมาได้

    15-deletedfile

    ภาพที่ 11: ไฟล์ doc1.docx ถูกลบหายไปจาก “เอกสารสำคัญ” บนเครื่องคอมพิวเตอร์แล้ว

    การกู้ไฟล์ที่ถูกลบไปแล้ว ต้องทำจากบน Google Drive ผ่านทางเว็บเบราเซอร์ โดยเข้าไปใน “เอกสารสำคัญ” แล้วคลิกตัว i ด้านขวามือบน แล้วคลิกที่คำว่า Activity จะพบว่า มีการลบ หรือจริงๆแล้วคือการย้ายไฟล์ไปลง Bin นั่นเอง ดังภาพที่ 12

    16-detailactivity

    ภาพที่ 12: แสดงให้เห็นว่าไฟล์ที่ถูกลบ ไปเก็บอยู่ใน Bin ของ Google Drive

    การกู้ไฟล์นี้คืนมา ก็เพียงคลิกที่ชื่อไฟล์ doc1.docx แล้วคลิกรูปแว่นขยาย จากนั้นระบบจะนำไปสู่ Bin หลังจากนั้น ให้คลิกขวาที่ doc1.docx แล้วเลือก Restore ตามภาพที่ 13:

    17-restore

    ภาพที่ 13: วิธีการ Restore ไฟล์ doc1.docx

    ผลก็คือ ได้ไฟล์ที่ถูกลบทิ้งกลับคืนมา ดังภาพที่ 14

    18-restorecomplete

    ภาพที่ 14: การกู้ไฟล์เสร็จสมบูรณ์

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

     

     

     

     

  • การส่ง 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
  • เทคนิคการอ่านค่าจากเว็บไซต์ที่มีการเปลี่ยนแปลง (ราคาหุ้น) มาเก็บไว้บน Google Sheets

    มีโจทย์ว่าต้องการคำนวนค่า Indicator ชื่อ RSI ของกองทุนรวมในต่างประเทศ ซึ่งปิดการซื้อขายเวลา 04:00 ของเวลาในประเทศไทย ทางกองทุนจะประกาศราคา (NAV) ในเวลาประมาณ 09:00 แต่ในการตัดสินใจลงทุน จะต้องพิจารณาค่า RSI ซึ่งกองทุนจะคำนวนและประกาศให้ประมาณ 12:00 ซึ่งบางทีก็หลงลืม และไม่ทันการ

    การคำนวนค่า RSI ใช้ค่าการเปลี่ยนแปลงของราคา แบ่งเป็น Gain และ Loss แล้วมาหาค่าเฉลี่ยและเข้าสูตรคำนวน (ไม่ขอกล่าวถึง หากต้องการทราบข้อมูลเพิ่มเติม อ่าน http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:relative_strength_index_rsi)

    สรุปคือ หากต้องการทราบค่า RSI ก่อนที่ทางกองทุนจะประกาศให้ ก็ต้องคำนวนเอง โดยจดค่าการเปลี่ยนแปลงของราคาในแต่ละวันซึ่งเป็นงานที่น่าเบื่อ จึงต้องหาวิธีลดภาระ

    แนวคิดคือ เว็บไซต์ http://www.bloomberg.com/quote/WGHCEPA:ID ซึ่งจะประกาศราคา NAV ในเวลา 09:00 นั้น หากเปิด HTML ดูจะพบว่าข้อมูลที่ต้องการจะอยู่ในรูปแบบของ

    ...
    <meta itemprop="price" content="46.92">
    ...
    <meta itemprop="priceChange" content="0.16">
    ...
    <meta itemprop="priceChangePercent" content="0.34">
    ...
    <meta itemprop="quoteTime" content="2015-05-11T00:59:30-0400">

    จากนั้น สร้าง Function ตามนี้

    function getWGHCEPA(){
     var content=UrlFetchApp.fetch("http://www.bloomberg.com/quote/WGHCEPA:ID");
     //'<meta itemprop="priceChange" content="0.16">';
     var data = content.getContentText().match(/meta itemprop="(.*)" content="(.*)"/mg );
     
     var id="xxxxxxxxxxxxxxxxxxxx Your file ID xxxxxxxxxxxxxx";
     var db=SpreadsheetApp.openById(id);
     var table=db.setActiveSheet(db.getSheetByName("Data"));
     
     var result=[];
     for (var i=0; i<data.length; i++){
     var temp=data[i].match(/meta itemprop="(.*)" content="(.*)"/); 
     result[temp[1]]=temp[2];
     } 
     
     table.appendRow([result["quoteTime"], result["price"], result["priceChange"], result["priceChangePercent"]]);
     
    }

    จากนั้น ตั้ง Trigger ให้ทำงานวันละครั้ง เวลาตั้งแต่ 09:00-10:00 เป็นอันเรียบร้อย

    wghcepa-trigger

    ผลที่ได้

    wghcepa-result

  • เริ่มต้นใช้งาน GAS Editor

    1. เปิด https://drive.google.com แล้ว Login
    2. คลิกปุ่ม New > Google Sheets
    3. ตั้งชื่อไฟล์: GASWS1
    4. เมนู Tools > Script Editor
    5. เลือก Blank Project
    6. ตั้งชื่อโปรเจค : myproject1
    7. เมนู File > New > Script File
    8. ตั้งชื่อ: myscript1
    9. แก้ไข myFunction() ตามนี้
      function myFunction() {
       Logger.log("Hello World");
      }
      
    10. เมนู File > Save หรือ กดปุ่ม Ctrl+s
    11. เมนู Run > myFunction
    12. ดูผลได้ที่ เมนู View > Logs หรือ กดปุ่ม Ctrl+Enter
    13. สร้าง function myForLoop ดังนี้
    14. function myForLoop(){
      for (var i=1; i<=10 ; i++) {
      myFunction();
      }
      }
    15. แล้ว Save ด้วย กดปุ่ม Ctrl+s
    16. เมนู Run > myForLoop
    17. ดูผลได้ที่ เมนู View > Logs หรือ กดปุ่ม Ctrl+Enter
    18. เมนู File > New > Script File
    19. ตั้งชื่อ myscript2
    20. สร้าง function myDate ดังนี้
    21. function myDate() {
      Logger.log(new Date());
      }
    22. แล้ว Save ด้วย กดปุ่ม Ctrl+s
    23. เมนู Resources > All yours triggers
    24. คลิก No triggers set up. Click here to add one now.
    25. ตั้งค่า
      Run = myDate
      Event = Time-driven
      แล้วเลือกเป็น Minutes timers และ Every minute
      จากนั้นคลิกปุ่ม Save
    26. ดูผลได้ที่ เมนู View > Logs หรือ กดปุ่ม Ctrl+Enter

     

  • Case Study: ตรวจสอบ Website Availability ด้วย Google Apps Script

    1. เปิด Google Sheets : GASWS1
    2. สร้าง Sheet ใหม่ ชื่อ “Log”
    3. เมนู Tools > Script Editor…
    4. เมนู File > New > Script File
    5. ตั้งชื่อ: myscript4
    6. เขียนโค๊ดตามนี้
       function check_website(url) { 
       var response = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
       return response.getResponseCode();
      }
      
      function doLog(timestamp, responseCode, timeDiff) {
       
       var ss=SpreadsheetApp.getActiveSpreadsheet();
       var sheet=SpreadsheetApp.setActiveSheet(ss.getSheetByName("Log")); 
       sheet.appendRow([timestamp, responseCode, timeDiff]);
      }
      
      function getTime() {
       var startTime = new Date() ;
       var responseCode=check_website("http://www.psu.ac.th");
       var endTime = new Date() ;
       var timeDiff = endTime-startTime; 
       doLog(Utilities.formatDate(new Date(), "GMT+7", "yyyyMMdd-HHmmss") , responseCode , timeDiff);
      }
    7. เมนู Resources > All yours triggers
      คลิก No triggers set up. Click here to add one now.
      ตั้งค่า
      Run = getTime
      Event = Time-driven
      แล้วเลือกเป็น Minutes timers และ Every minute
      จากนั้นคลิกปุ่ม Save
  • อ่าน/เขียนข้อมูลกับ Google Sheets

    1. เปิด Google Sheets : GASWS1
    2. เมนู Tools > Script Editor…
    3. เมนู File > New > Script File
    4. ตั้งชื่อ: myscript3
    5. สร้าง function insertData1() ตามนี้
      function insertData1() {
       var ss=SpreadsheetApp.getActiveSpreadsheet();
       var sheet=SpreadsheetApp.setActiveSheet(ss.getSheetByName("Sheet1"));
       sheet.getRange(1, 1).setValue("Hello World");
       sheet.getRange("A2").setValue("สวัสดี");
       
       var v1=[ ["ชื่อ","นามสกุล","อายุ"] ];
       var v2=[
       ["สมชาย"]
       ,["Robert"]
       ,["39"]
       ];
       sheet.getRange("A3:C3").setValues(v1);
       sheet.getRange("A4:A6").setValues(v2);
      }
    6. เมนู Run > insertData1
    7. สร้าง function insertData2() ตามนี้
      function insertData2() {
       var ss=SpreadsheetApp.getActiveSpreadsheet();
       var sheet=SpreadsheetApp.setActiveSheet(ss.getSheetByName("Sheet1")); 
       sheet.appendRow([new Date(),"something"]);
      }
    8. เมนู File > Save หรือ กดปุ่ม Ctrl+s
    9. เมนู Run > insertData2
    10. เมนู Resources > All yours triggers
      คลิก No triggers set up. Click here to add one now.
      ตั้งค่า
      Run = insertData2
      Event = Time-driven
      แล้วเลือกเป็น Minutes timers และ Every minute
      จากนั้นคลิกปุ่ม Save
    11. ไปที่ Google Sheets “GASWS1”
    12. สร้าง Sheet ใหม่ ชื่อ “ReadData”
    13. เมนู Tools > Script Editor…
    14. สร้าง function readData1() ตามนี้
      function readData1(){
       var ss=SpreadsheetApp.getActiveSpreadsheet();
       var sheet=SpreadsheetApp.setActiveSheet(ss.getSheetByName("ReadData")); 
      
       var url="https://docs.google.com/spreadsheets/d/1oztRXjC2KJzrqC3LtiRnUPrEgohX4VTYHixylvtCdzY/edit?usp=sharing";
       var db=SpreadsheetApp.openByUrl(url);
       var table=db.setActiveSheet(db.getSheetByName("WGHCEPA"));
       var data=table.getRange("A1:J10").getValues();
       
       for (var i=0; i<data.length;i++){
       sheet.appendRow(data[i]);
       }
       
      }
    15. เมนู File > Save หรือ กดปุ่ม Ctrl+s
    16. เมนู Run > readData1
    17. สร้าง function readData2() ตามนี้
      function readData2(){
       var ss=SpreadsheetApp.getActiveSpreadsheet();
       var sheet=SpreadsheetApp.setActiveSheet(ss.getSheetByName("readData")); 
      
       var id="1oztRXjC2KJzrqC3LtiRnUPrEgohX4VTYHixylvtCdzY";
       var db=SpreadsheetApp.openById(id);
       var table=db.setActiveSheet(db.getSheetByName("WGHCEPA"));
       var data=table.getDataRange().getValues();
       
       for (var i=0; i<data.length;i++){
       sheet.appendRow(data[i]);
       }
       
      }
    18. เมนู File > Save หรือ กดปุ่ม Ctrl+s
    19. เมนู Run > readData2
    20. สร้าง function insertData3() ตามนี้
      function insertData3(){
       var url="https://docs.google.com/a/psu.ac.th/spreadsheets/d/1bQyyQrB3PPyawWVb3afMi0Kgz1KUibIfMblv351BtQI/edit?usp=sharing";
       var db=SpreadsheetApp.openByUrl(url);
       var table=db.setActiveSheet(db.getSheetByName("Sheet1"));
       // เปลี่ยนเป็น ชื่อ นามสกุล และคณะ/หน่วยงานของท่าน
       var mydata=["ชื่อ","นามสกุล","คณะ/หน่วยงาน"];
       
       table.appendRow(mydata);
      }
    21. เมนู File > Save หรือ กดปุ่ม Ctrl+s
    22. เมนู Run > insertData3