메시지 UI 확장

Gmail을 확장하는 Google Workspace 부가기능은 사용자가 메시지를 읽을 때의 사용자 인터페이스입니다. 이렇게 하면 응답하는 작업을 자동화하는 Google Workspace 부가기능 메시지를 콘텐츠에서 자동으로 추가 정보가 표시됩니다.

부가기능 메시지 UI 액세스

부가기능의 메시지 UI를 보는 방법에는 두 가지가 있습니다. 첫 번째 방법은 메시지를 표시하는 경우 (예: Gmail 받은편지함 창의 부가기능 홈페이지). 두 번째 방법은 메시지를 보는 동안 부가기능을 시작할 수 있습니다.

어느 경우든 부가기능이 해당하는 컨텍스트 트리거 함수: 부가기능 매니페스트가 포함됩니다. 또한 부가기능이 여전히 열려 있습니다. 상황별 트리거 함수는 Gmail이 사용자에게 표시합니다.

메시지 부가기능 구축

다음 일반적인 단계에 따라 부가기능에 메시지 기능을 추가할 수 있습니다.

  1. 부가기능 스크립트 프로젝트에 적절한 필드 추가 매니페스트 포함: 범위를 메시지 기능을 사용 설정할 수 있습니다 반드시 조건부 트리거 필드 를 매니페스트에 추가하며, unconditional {}의 값입니다.
  2. 메시지 UI를 빌드하는 상황별 트리거 함수 구현 사용자가 메시지에서 부가기능을 선택할 때
  3. 사용자의 UI에 응답하는 데 필요한 관련 함수 구현 상호작용한다는 것입니다.

문맥 트리거

메일을 읽을 때 사용자에게 도움을 제공하려면 Google Workspace 부가기능은 상황별 트리거를 포함해야 합니다. 사용자가 트리거를 충족하는 Gmail 메일 (부가기능이 열려 있음)이 열립니다. 기준*을 나타냅니다. 실행된 트리거는 문맥 트리거 함수를 사용하여 Gmail에 표시되도록 반환합니다. 이때 상호작용을 시작할 수 있습니다.

컨텍스트 트리거는 부가기능의 프로젝트에 정의됩니다. 매니페스트). 트리거 정의는 어떤 트리거 함수를 실행할지 Gmail에 알립니다. 조건일 수 있습니다 예를 들어 다음 매니페스트 스니펫은 이 함수는 메시지가 열릴 때 onGmailMessageOpen() 트리거 함수를 호출합니다.

{
  ...
  "addOns": {

    "common": {
      ...
    },
    "gmail": {
      "contextualTriggers": [
        {
          "unconditional": {},
          "onTriggerFunction": "onGmailMessageOpen"
        }
      ],
      ...
    },
    ...
  }
  ...
}

문맥 트리거 함수

모든 문맥 트리거에는 해당하는 트리거 함수가 있어야 합니다. URL을 입력합니다. 이 함수는 매니페스트의 onTriggerFunction 필드를 확인합니다. 이 함수를 구현하여 액션 이벤트 객체 인수를 사용하고 단일 인수 또는 Card 객체 또는 Card 객체를 반환합니다.

특정 Gmail 메일에 대해 문맥 트리거가 실행될 때 이를 함수를 사용하여 액션 이벤트 객체입니다. 트리거 함수는 이 이벤트 객체에서 제공한 메시지 ID를 사용하는 경우가 많습니다. Apps Script의 Gmail 서비스: 예를 들어 함수는 다음 함수를 사용하여 메시지 내용을 추출할 수 있습니다.

  // Activate temporary Gmail scopes, in this case to allow
  // the add-on to read message metadata and content.
  var accessToken = e.gmail.accessToken;
  GmailApp.setCurrentMessageAccessToken(accessToken);

  // Read message metadata and content. This requires the Gmail scope
  // https://www.googleapis.com/auth/gmail.addons.current.message.readonly.
  var messageId = e.gmail.messageId;
  var message = GmailApp.getMessageById(messageId);
  var subject = message.getSubject();
  var sender = message.getFrom();
  var body = message.getPlainBody();
  var messageDate = message.getDate();

  // Setting the access token with a gmail.addons.current.message.readonly
  // scope also allows read access to the other messages in the thread.
  var thread = message.getThread();
  var threadMessages = thread.getMessages();

  // Using this link can avoid the need to copy message or thread content
  var threadLink = thread.getPermalink();

그러면 트리거 함수가 이 데이터에 대해 작업을 수행하여 매우 유사합니다. 예를 들어 판매 내역을 요약하는 부가기능 숫자는 메시지 본문에서 판매 수치를 수집하여 카드에 표시됩니다.

트리거 함수는 빌드된 Card 드림 객체입니다. 예를 들어 다음은 메일의 제목과 발신자만 나열됩니다.

  function onGmailMessageOpen(e) {
    // Activate temporary Gmail scopes, in this case to allow
    // message metadata to be read.
    var accessToken = e.gmail.accessToken;
    GmailApp.setCurrentMessageAccessToken(accessToken);

    var messageId = e.gmail.messageId;
    var message = GmailApp.getMessageById(messageId);
    var subject = message.getSubject();
    var sender = message.getFrom();

    // Create a card with a single card section and two widgets.
    // Be sure to execute build() to finalize the card construction.
    var exampleCard = CardService.newCardBuilder()
        .setHeader(CardService.newCardHeader()
            .setTitle('Example card'))
        .addSection(CardService.newCardSection()
            .addWidget(CardService.newKeyValue()
                .setTopLabel('Subject')
                .setContent(subject))
            .addWidget(CardService.newKeyValue()
                .setTopLabel('From')
                .setContent(sender)))
        .build();   // Don't forget to build the Card!
    return [exampleCard];
  }