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

ในส่วนเสริมของ 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();
  }