Надстройка Gmail Есть ли способ обновить черновик открытого ответа GmailApp - PullRequest
0 голосов
/ 06 августа 2020

Разрабатываю надстройку для Gmail. Я создал функцию для создания черновика ответа, когда пользователь вводит текст и нажимает кнопку (есть несколько вызовов API для создания тела письма с использованием этих данных).

function composeReply(e){
            var messageId = e.messageMetadata.messageId;
            var message = GmailApp.getMessageById(messageId);
            ......
            var msg = {
              htmlBody: result['email_content'],
              subject: result['email_subject']
            }
    
            var draft = message.createDraftReply('', msg);
            return CardService.newComposeActionResponseBuilder().setGmailDraft(draft).build();

    }

В приведенной выше функции я хочу проверить, есть ли в сообщении уже черновик ответа, а затем обновить, чтобы создать новый черновик ответа Или есть ли способ удалить существующий черновик перед созданием нового

1 Ответ

1 голос
/ 20 августа 2020

Ответ:

Вы не можете сделать это с помощью GmailApp, однако вы можете использовать расширенную службу Gmail, чтобы получить список черновиков сообщений и проверить, имеет ли текущее сообщение ту же цепочку. Идентификатор как любой из черновиков.

Пример:

Используя специальное значение me для идентификатора пользователя, вы можете позвонить в расширенную службу Gmail, чтобы получить список черновиков. :

var response = Gmail.Users.Drafts.list("me");

Согласно документации на Users.drafts: list , в ответ вы получите массив users.drafts ресурсов:

{
  "drafts": [
    users.drafts Resource
  ],
  "nextPageToken": string,
  "resultSizeEstimate": unsigned integer
}

Затем вы можете использовать Users.messages: get , чтобы получить идентификатор потока из текущего сообщения:

var threadId = Gmail.Users.Messages.get("me", messageId).threadId

или используя GmailApp:

var threadId = GmailApp.getMessageById(messageId).getThread().getId()

Отсюда вы можете l oop просматривать черновики, проверяя, совпадают ли идентификаторы потоков, и если они совпадают, то черновик уже существует, и вы можете его удалить:

try {
  response.drafts.forEach(function(draft) {
    if (draft.message.threadId == threadId) {
      throw draft.id;
    }
  });
}
catch (id) {
  Gmail.Users.Drafts.remove("me", id)
}  
// create new draft here

Надеюсь, это полезно вам!

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...