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

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

คุณสามารถสร้างข้อความร่างเป็นข้อความเดี่ยวใหม่หรือการตอบ ข้อความที่มีอยู่ ซึ่งควบคุมโดย ComposeEmailType enum ที่กำหนดให้ setComposeAction() คุณสามารถสร้างร่างการตอบกลับเป็นการตอบกลับรายการเดียวหรือ "reply-all" ข้อความ

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

ฉบับร่างแบบสแตนด์อโลนจะเริ่มชุดข้อความใหม่ และไม่ใช่การตอบกลับโพสต์ใดๆ ที่มีอยู่ คุณจะสร้างฉบับร่างแบบสแตนด์อโลนได้ด้วยรายการใดรายการหนึ่งต่อไปนี้ บริการ 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();
  }