การเขียนข้อความร่าง

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

คุณจะสร้างวิดเจ็ตที่มีการดําเนินการที่ลิงก์อยู่ได้ในส่วนเสริม Google Workspace คุณสามารถใช้การดําเนินการเขียนจดหมายฉบับร่างใหม่ (ไม่บังคับ) ได้โดยการกรอกข้อมูลที่ป้อนใน UI ส่วนเสริมหรือข้อมูลจากข้อความที่เปิดอยู่ เช่น คุณอาจมีปุ่มใน UI ของข้อความส่วนเสริมซึ่งสร้างการตอบกลับข้อความที่เปิดอยู่ในปัจจุบันโดยใช้ข้อมูลจากส่วนเสริม

เมื่อมีการทํางานที่สร้างข้อความ Gmail จะเรียกใช้ฟังก์ชันเรียกกลับเพื่อสร้างและแสดงผลฉบับร่าง จากนั้น Gmail จะแสดงแบบร่างนั้นใน UI ในหน้าต่างเขียนอีเมลมาตรฐาน ซึ่งผู้ใช้แก้ไขและส่งได้ตามต้องการ

การกําหนดค่าการดําเนินการเพื่อสร้างข้อความร่าง

หากต้องการกําหนดค่าวิดเจ็ตเพื่อเริ่มการดําเนินการสร้างฉบับร่างเมื่อเลือก คุณต้องดําเนินการต่อไปนี้

  1. ตรวจสอบว่าไฟล์ Manifest มีขอบเขต action.compose ดังต่อไปนี้

    https://www.googleapis.com/auth/gmail.addons.current.action.compose

    คุณจะใช้ขอบเขตที่ให้สิทธิ์มากขึ้นแทนได้ แต่ควรทําเฉพาะในกรณีที่ขอบเขตนั้นจําเป็นจริงๆ เท่านั้น

  2. สร้างออบเจ็กต์ Action และเชื่อมโยงกับฟังก์ชันเรียกกลับที่คุณกําหนด

  3. เรียก setComposeAction() ของวิดเจ็ตในส่วนฟังก์ชันการจัดการวิดเจ็ต โดยระบุออบเจ็กต์ Action และระบุ ComposeEmailType

  4. ใช้ฟังก์ชันเรียกกลับที่ดําเนินการสร้างฉบับร่าง ฟังก์ชันนี้จะได้รับออบเจ็กต์เหตุการณ์เป็นอาร์กิวเมนต์ ฟังก์ชันเรียกกลับต้องดําเนินการดังต่อไปนี้

    1. สร้างออบเจ็กต์ GmailDraft
    2. สร้างออบเจ็กต์ ComposeActionResponse โดยใช้คลาส ComposeActionResponseBuilder และออบเจ็กต์ GmailDraft
    3. แสดงผล ComposeActionResponse ที่สร้างขึ้น

คุณสามารถป้อนข้อมูล GmailDraft ที่สร้างในฟังก์ชันเรียกกลับให้กับผู้รับ เรื่อง เนื้อหาข้อความ และไฟล์แนบได้ล่วงหน้า หากต้องการกรอกข้อมูลฉบับร่าง ข้อมูลอาจมาจากแหล่งที่มาต่างๆ แต่มักมาจากข้อมูลที่ให้ไว้กับส่วนเสริม ข้อมูลในข้อความที่เปิด หรือข้อมูลที่รวบรวมจากบริการของบุคคลที่สาม ออบเจ็กต์เหตุการณ์ที่ส่งไปยังฟังก์ชันเรียกกลับจะประกอบด้วยรหัสข้อความแบบเปิดและข้อมูลส่วนเสริมอื่นๆ ที่คุณสามารถใช้เติมแบบร่างไว้ล่วงหน้า

คุณจะสร้างแบบร่างเป็นข้อความแบบสแตนด์อโลนใหม่หรือการตอบกลับข้อความที่มีอยู่ก็ได้ สิทธิ์นี้ควบคุมโดย Enum ของ ComposeEmailType ที่ให้กับ setComposeAction() คุณสามารถสร้างแบบร่างการตอบกลับเป็นการตอบกลับครั้งเดียวหรือข้อความ "ตอบกลับทั้งหมด" ได้

ฉบับร่างแบบสแตนด์อโลน

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

ตอบกลับฉบับร่าง

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

ตัวอย่าง

ข้อมูลโค้ดต่อไปนี้จะแสดงวิธีกําหนดการดําเนินการที่สร้างฉบับร่างสําหรับการตอบกลับปุ่ม

  var composeAction = CardService.newAction()
      .setFunctionName('createReplyDraft');
  var composeButton = CardService.newTextButton()
      .setText('Compose Reply')
      .setComposeAction(
          composeAction,
          CardService.ComposedEmailType.REPLY_AS_DRAFT);

  // ...

  /**
   *  Creates a draft email (with an attachment and inline image)
   *  as a reply to an existing message.
   *  @param {Object} e An event object passed by the action.
   *  @return {ComposeActionResponse}
   */
  function createReplyDraft(e) {
    // Activate temporary Gmail scopes, in this case to allow
    // a reply to be drafted.
    var accessToken = e.gmail.accessToken;
    GmailApp.setCurrentMessageAccessToken(accessToken);

    // Creates a draft reply.
    var messageId = e.gmail.messageId;
    var message = GmailApp.getMessageById(messageId);
    var draft = message.createDraftReply('',
        {
            htmlBody: "Kitten! <img src='cid:kitten'/>",
            attachments: [
              UrlFetchApp.fetch('https://example.com/images/myDog.jpg')
                  .getBlob()
            ],
            inlineImages: {
              "kitten": UrlFetchApp.fetch('https://example.com/images/myKitten.jpg')
                           .getBlob()
            }
        }
    );

    // Return a built draft response. This causes Gmail to present a
    // compose window to the user, pre-filled with the content specified
    // above.
    return CardService.newComposeActionResponseBuilder()
        .setGmailDraft(draft).build();
  }