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

ในส่วนเสริมของ 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. ใช้ฟังก์ชัน Callback ที่ดำเนินการสร้างดราฟต์ ฟังก์ชันนี้รับออบเจ็กต์เหตุการณ์ เป็นอาร์กิวเมนต์ ฟังก์ชัน Callback ต้องทำสิ่งต่อไปนี้

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

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

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