Logging

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

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" และ "john@example.com" เวลา มีการเขียนบันทึกต่อไปนี้:

[16-09-12 13:50:42:193 PDT] การส่งอีเมลแถวที่ 2 ไปยัง john@example.com
[16-09-12 13:50:42:271 PDT] ข้อมูลแถว 2: ค่าใช้จ่าย 103.24

Cloud Logging

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

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

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

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

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

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

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

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

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

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

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

Error Reporting

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

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

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

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