ในส่วนเสริมของ Google Workspace คุณสามารถสร้างวิดเจ็ต ที่มีการดำเนินการที่ลิงก์ไว้ คุณสามารถใช้ การดำเนินการเพื่อเขียนอีเมลฉบับร่างใหม่ โดยอาจเลือกกรอกข้อมูลโดยใช้ ข้อมูลที่ป้อนใน UI ของส่วนเสริมหรือข้อมูลจากข้อความที่เปิดอยู่ เช่น คุณสามารถมีปุ่มใน UI ของข้อความส่วนเสริม ที่สร้างการตอบกลับข้อความที่เปิดอยู่โดยมีข้อมูลจากส่วนเสริม ที่ป้อนไว้ล่วงหน้า
เมื่อมีการเรียกใช้การดำเนินการที่สร้างข้อความ Gmail จะเรียกใช้ฟังก์ชันการเรียกกลับ เพื่อสร้างและส่งกลับฉบับร่าง จากนั้น Gmail จะแสดงฉบับร่างนั้นใน UI ในหน้าต่างเขียนอีเมลมาตรฐาน ซึ่งผู้ใช้สามารถแก้ไขและส่ง ได้ตามต้องการ
การกำหนดค่าการดำเนินการเพื่อสร้างข้อความร่าง
หากต้องการกำหนดค่าวิดเจ็ตให้เริ่มการดำเนินการสร้างฉบับร่างเมื่อเลือก คุณต้องทำดังนี้
- ตรวจสอบว่า manifest มีขอบเขต - action.composeดังนี้- https://www.googleapis.com/auth/gmail.addons.current.action.compose- คุณสามารถใช้ขอบเขตที่อนุญาตมากขึ้นแทนได้ แต่ควรทำก็ต่อเมื่อ ขอบเขตนั้นจำเป็นอย่างยิ่งเท่านั้น 
- สร้างออบเจ็กต์ - Actionและเชื่อมโยงกับฟังก์ชันเรียกกลับ ที่คุณกำหนด
- เรียกใช้ - setComposeAction()ฟังก์ชันตัวแฮนเดิลวิดเจ็ตของวิดเจ็ต โดยระบุออบเจ็กต์- Actionและระบุ- ComposeEmailType
- ใช้ฟังก์ชัน Callback ที่ดำเนินการสร้างดราฟต์ ฟังก์ชันนี้รับออบเจ็กต์เหตุการณ์ เป็นอาร์กิวเมนต์ ฟังก์ชัน Callback ต้องทำสิ่งต่อไปนี้ - สร้างGmailDraftออบเจ็กต์
- สร้างออบเจ็กต์ ComposeActionResponseโดยใช้คลาสComposeActionResponseBuilderและออบเจ็กต์GmailDraft
- ส่งคืน ComposeActionResponseที่สร้างขึ้น
 
- สร้าง
คุณสามารถป้อนข้อมูลล่วงหน้าใน GmailDraft
ที่สร้างในฟังก์ชันเรียกกลับด้วย
ผู้รับ เรื่อง เนื้อหาข้อความ และไฟล์แนบ หากต้องการกรอกข้อมูลในฉบับร่าง
ข้อมูลอาจมาจากแหล่งที่มาใดก็ได้ แต่โดยปกติแล้วจะมาจากข้อมูล
ที่ระบุไว้ในส่วนเสริมเอง ข้อมูลในข้อความที่เปิดอยู่ หรือ
ข้อมูลที่รวบรวมจากบริการของบุคคลที่สาม ออบเจ็กต์เหตุการณ์
ที่ส่งไปยังฟังก์ชันเรียกกลับจะมีรหัสข้อความที่เปิดและข้อมูลส่วนเสริมอื่นๆ
ที่คุณใช้เพื่อป้อนข้อมูลล่วงหน้าในฉบับร่างได้
คุณสร้างฉบับร่างเป็นข้อความใหม่แบบสแตนด์อโลนหรือเป็นคำตอบของข้อความที่มีอยู่ก็ได้ โดยควบคุมโดย enum 
ComposeEmailType
ที่ระบุให้กับ
setComposeAction()
คุณสร้างฉบับร่างการตอบกลับเป็นคำตอบเดียวหรือข้อความ "ตอบกลับทั้งหมด" ได้
ฉบับร่างแบบสแตนด์อโลน
ฉบับร่างแบบสแตนด์อโลนจะเริ่มชุดข้อความใหม่และไม่ใช่การตอบกลับข้อความที่มีอยู่ คุณสร้างฉบับร่างแบบสแตนด์อโลนได้โดยใช้ฟังก์ชันบริการ Gmail อย่างใดอย่างหนึ่งต่อไปนี้
- GmailApp.createDraft(recipient, subject, body)
- GmailApp.createDraft(recipient, subject, body, options)
การตอบกลับฉบับร่าง
ฉบับร่างของการตอบกลับเป็นส่วนหนึ่งของชุดข้อความที่มีอยู่ ฉบับร่างของการตอบกลับมี 2 แบบ ได้แก่ การตอบกลับเดียวที่จะส่งให้เฉพาะผู้ส่งข้อความ หรือฉบับร่าง "ตอบทุกคน" ที่จะส่งให้ทุกคนที่ได้รับข้อความนั้น คุณสร้าง ฉบับร่างของการตอบกลับได้โดยใช้ฟังก์ชันบริการ Gmail อย่างใดอย่างหนึ่งต่อไปนี้
- GmailMessage.createDraftReply(body)
- GmailMessage.createDraftReply(body, options)
- GmailMessage.createDraftReplyAll(body)
- GmailMessage.createDraftReplyAll(body, options)
- GmailThread.createDraftReply(body)
- GmailThread.createDraftReply(body, options)
- GmailThread.createDraftReplyAll(body)
- GmailThread.createDraftReplyAll(body, options)
ตัวอย่าง
ข้อมูลโค้ดต่อไปนี้แสดงวิธีกําหนดการกระทําที่สร้างฉบับร่างการตอบกลับให้กับปุ่ม
  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();
  }