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

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

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

กำหนดค่าการดำเนินการเพื่อสร้างข้อความฉบับร่าง

หากต้องการกำหนดค่าวิดเจ็ตให้เริ่มการดำเนินการสร้างฉบับร่างเมื่อเลือก คุณต้องทำดังนี้

  1. ตรวจสอบว่า manifest มีขอบเขต action.compose ดังนี้

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

    คุณสามารถใช้ขอบเขตที่อนุญาตมากขึ้นแทนได้ แต่ควรทำก็ต่อเมื่อ ขอบเขตนั้นจำเป็นอย่างยิ่งเท่านั้น

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

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

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

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

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

คุณสร้างฉบับร่างเป็นข้อความใหม่แบบสแตนด์อโลนหรือเป็นคำตอบของข้อความที่มีอยู่ก็ได้ โดยควบคุมโดย enum ComposeEmailType ที่ระบุให้กับ setComposeAction คุณสร้างฉบับร่างการตอบกลับเป็นคำตอบเดียวหรือข้อความ "ตอบกลับทั้งหมด" ได้

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

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

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

ฉบับร่างของการตอบกลับเป็นส่วนหนึ่งของชุดข้อความที่มีอยู่ ฉบับร่างของการตอบกลับมี 2 แบบ ได้แก่ การตอบกลับเดียวที่จะส่งให้เฉพาะผู้ส่งข้อความ หรือฉบับร่างของ "ตอบทุกคน" ที่จะส่งให้ทุกคนที่ได้รับข้อความนั้น คุณสร้าง ฉบับร่างการตอบกลับได้โดยใช้ฟังก์ชันบริการ 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 previously
  // specified.
  return CardService.newComposeActionResponseBuilder()
      .setGmailDraft(draft).build();
}