การบันทึก

เมื่อพัฒนาแอปประเภทใดก็ตาม คุณมักต้องการบันทึกข้อมูลเพื่อช่วย วินิจฉัยข้อบกพร่องระหว่างการพัฒนา ระบุและวินิจฉัยปัญหาของลูกค้า และเพื่อวัตถุประสงค์อื่นๆ

Apps Script มีกลไกการบันทึก 3 แบบ ได้แก่

  • บันทึกการเรียกใช้งาน Apps Script ในตัว บันทึกนี้มีขนาดเล็กและสตรีมแบบเรียลไทม์ แต่จะคงอยู่เพียง ระยะเวลาสั้นๆ เท่านั้น

  • อินเทอร์เฟซ Cloud Logging ใน Developer Console ซึ่งมีบันทึกที่คงอยู่เป็นเวลาหลายวันหลังจากสร้าง

  • อินเทอร์เฟซการรายงานข้อผิดพลาดใน Developer Console ซึ่งจะรวบรวมและบันทึกข้อผิดพลาดที่เกิดขึ้นขณะที่สคริปต์ทำงาน

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

ใช้บันทึกการดำเนินการของ Apps Script

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

คุณใช้บริการบันทึก Logger หรือ console ใน บันทึกการดำเนินการในตัวก็ได้

บันทึกเหล่านี้มีไว้สำหรับการตรวจสอบอย่างง่ายในระหว่างการพัฒนาและการแก้ไขข้อบกพร่อง และจะคงอยู่ไม่นาน

เช่น ลองพิจารณาฟังก์ชันนี้

utils/logging.gs
/**  * Logs Google Sheet information.  * @param {number} rowNumber The spreadsheet row number.  * @param {string} email The email to send with the row data.  */ function emailDataRow(rowNumber, email) {   console.log('Emailing data row ' + rowNumber + ' to ' + email);   try {     const sheet = SpreadsheetApp.getActiveSheet();     const data = sheet.getDataRange().getValues();     const rowData = data[rowNumber - 1].join(' ');     console.log('Row ' + rowNumber + ' data: ' + rowData);     MailApp.sendEmail(email, 'Data in row ' + rowNumber, rowData);   } catch (err) {     // TODO (developer) - Handle exception     console.log('Failed with error %s', err.message);   } }

เมื่อเรียกใช้สคริปต์นี้โดยป้อนค่า "2" และ "[email protected]" ระบบจะเขียนบันทึกต่อไปนี้

[16-09-12 13:50:42:193 PDT] ส่งอีเมลแถวข้อมูล 2 ไปที่ [email protected]
[16-09-12 13:50:42:271 PDT] ข้อมูลแถว 2: ค่าใช้จ่าย 103.24

Cloud Logging

นอกจากนี้ Apps Script ยังให้สิทธิ์เข้าถึงบริการ Cloud Logging ของ Google Cloud Platform (GCP) บางส่วนด้วย เมื่อคุณ ต้องการการบันทึกที่คงอยู่หลายวัน หรือต้องการโซลูชันการบันทึกที่ซับซ้อนมากขึ้น สำหรับสภาพแวดล้อมการใช้งานจริงแบบหลายผู้ใช้ Cloud Logging เป็นตัวเลือกที่แนะนำ ดูรายละเอียดการเก็บรักษาข้อมูลและโควต้าอื่นๆ ได้ที่โควต้าและขีดจำกัดของ Cloud Logging

หากต้องการโควต้าการบันทึกเพิ่มเติม คุณสามารถส่งคำขอโควต้า Google Cloud Platform โดยคุณต้องมีสิทธิ์เข้าถึงโปรเจ็กต์ Cloud Platform ที่สคริปต์ใช้

การใช้ Cloud Logging

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

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

แทน

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

คุณสามารถบันทึกสตริง สตริงที่จัดรูปแบบ และแม้แต่วัตถุ JSON ได้โดยใช้ฟังก์ชันที่บริการ console ของ Apps Script มีให้

ตัวอย่างต่อไปนี้แสดงวิธีใช้บริการ console เพื่อบันทึกข้อมูลใน Cloud Operations

utils/logging.gs
/**  * Logs the time taken to execute 'myFunction'.  */ function measuringExecutionTime() {   // A simple INFO log message, using sprintf() formatting.   console.info('Timing the %s function (%d arguments)', 'myFunction', 1);    // Log a JSON object at a DEBUG level. The log is labeled   // with the message string in the log viewer, and the JSON content   // is displayed in the expanded log structure under "jsonPayload".   const parameters = {     isValid: true,     content: 'some string',     timestamp: new Date()   };   console.log({message: 'Function Input', initialData: parameters});   const label = 'myFunction() time'; // Labels the timing log entry.   console.time(label); // Starts the timer.   try {     myFunction(parameters); // Function to time.   } catch (e) {     // Logs an ERROR message.     console.error('myFunction() yielded an error: ' + e);   }   console.timeEnd(label); // Stops the timer, logs execution duration. }

คีย์ผู้ใช้ที่ใช้งานอยู่

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

คีย์ผู้ใช้ที่ใช้งานอยู่ชั่วคราวดีกว่าตัวระบุการบันทึก เช่น อีเมล เนื่องจาก

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

หากต้องการค้นหาคีย์ผู้ใช้ที่ใช้งานชั่วคราวในรายการบันทึกของ Cloud ให้ดูบันทึกของ Cloud ใน Google Cloud Console คุณจะทำได้ก็ต่อเมื่อโปรเจ็กต์สคริปต์ใช้โปรเจ็กต์ Google Cloud มาตรฐาน ที่คุณมีสิทธิ์เข้าถึง เมื่อเปิดโปรเจ็กต์ Google Cloud ในคอนโซลแล้ว ให้เลือกรายการบันทึกที่สนใจและขยายเพื่อดู ข้อมูลเมตา > ป้ายกำกับ > script.googleapis.com/user_key

นอกจากนี้ คุณยังรับคีย์ผู้ใช้ที่ใช้งานอยู่ชั่วคราวได้โดยการเรียกใช้ Session.getTemporaryActiveUserKey() ในสคริปต์ วิธีหนึ่งในการใช้วิธีนี้คือการแสดงคีย์ต่อผู้ใช้ ขณะที่ผู้ใช้เรียกใช้สคริปต์ จากนั้นผู้ใช้สามารถเลือกที่จะรวมคีย์ของตนเอง เมื่อรายงานปัญหาเพื่อช่วยให้คุณระบุบันทึกที่เกี่ยวข้องได้

การบันทึกข้อยกเว้น

การบันทึกข้อยกเว้นจะส่งข้อยกเว้นที่ไม่ได้จัดการในโค้ดโปรเจ็กต์สคริปต์ ไปยัง Cloud Logging พร้อมกับ Stack Trace

หากต้องการดูบันทึกข้อยกเว้น ให้ทำตามขั้นตอนด้านล่าง

  1. เปิดโปรเจ็กต์ Apps Script
  2. คลิกการดำเนินการ ทางด้านซ้าย
  3. คลิกเพิ่มตัวกรอง > สถานะที่ด้านบน
  4. เลือกช่องทำเครื่องหมายไม่สำเร็จและหมดเวลา

นอกจากนี้ คุณยังดูข้อยกเว้นที่บันทึกไว้ในคอนโซล GCP ได้ด้วย หากโปรเจ็กต์สคริปต์ใช้โปรเจ็กต์ Google Cloud มาตรฐาน ที่คุณมีสิทธิ์เข้าถึง

เปิดใช้การบันทึกข้อยกเว้น

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

  1. เปิดโปรเจ็กต์สคริปต์
  2. คลิกการตั้งค่าโปรเจ็กต์ ทางด้านซ้าย
  3. เลือกช่องทําเครื่องหมายบันทึกข้อยกเว้นที่ตรวจไม่พบไปยัง Cloud Operations

Error Reporting

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

ข้อกำหนดในการบันทึก

ไม่มีข้อกำหนดในการใช้บันทึกการดำเนินการในตัว

คุณดูบันทึกของ Cloud เวอร์ชันที่เรียบง่ายได้ในแดชบอร์ด Apps Script อย่างไรก็ตาม หากต้องการใช้ Cloud Logging และการรายงานข้อผิดพลาดให้เกิดประโยชน์สูงสุด คุณต้องมีสิทธิ์เข้าถึงโปรเจ็กต์ GCP ของสคริปต์ การดำเนินการนี้จะทำได้ก็ต่อเมื่อโปรเจ็กต์สคริปต์ของคุณ ใช้โปรเจ็กต์ Google Cloud มาตรฐาน