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

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

เมื่อทริกเกอร์การดำเนินการที่สร้างข้อความ Gmail จะเรียกใช้ฟังก์ชันการเรียกกลับเพื่อสร้างและแสดงฉบับร่าง จากนั้น 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 มีรหัสข้อความที่เปิดอยู่และข้อมูลส่วนเสริมอื่นๆ ที่คุณสามารถใช้เพื่อป้อนข้อมูลในฉบับร่างล่วงหน้า

คุณสามารถสร้างแบบร่างเป็นข้อความใหม่แบบสแตนด์อโลนหรือเป็นข้อความตอบกลับข้อความที่มีอยู่ก็ได้ ซึ่งควบคุมโดย ComposeEmailType ที่เป็น enum ให้กับ 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();
  }