Google Apps Script - изменение метки отдельного электронного письма в Gmail - PullRequest
0 голосов
/ 11 сентября 2018

Я хочу изменить метку отдельного письма программно в gmail в скрипте Google.Я не могу использовать стандартную службу GmailApp , потому что она применяет действия ко всей цепочке, а не к отдельной электронной почте.Я нашел несколько примеров того, как это делается с помощью расширенного API Gmail ( Поиск / замена ярлыков в определенных сообщениях (не во всей цепочке) с помощью Google Apps Script ).Но я не имел успеха с этим.Я получаю следующую ошибку:

Указано неверное количество аргументов.Ожидается только 3-4 (строка 5, файл "test")

Вот фрагмент кода, который я пробовал в Редакторе скриптов Google:

function changeLabel() {
  var addLabel = '3to-smartsheetstest';
  var removeLabel = '3to-smartsheets';
  var msgId = '142b7c52e4cc4619';
  var msgLabel = Gmail.Users.Messages.modify({
    'userId': 'me',
    'id': messageId,
    'resource':{
      'addLabelIds': [addlabel],
      'removeLabelIds': [removelabel]
    }
  })
}

В документации по ресурсам Google сказано, что для javascript нужно структурировать такие параметры:

'userId': userId,
'id': messageId,
'addLabelIds': labelsToAdd,
'removeLabelIds': labelsToRemove

Но, похоже, это действительно нужно структурировать следующим образом (пояснено в отчете об ошибке здесь: https://github.com/google/google-api-nodejs-client/issues/312):

'userId': 'some email address',
'id': 'some message id',
'resource':{
    'addLabelIds': ['some label id'],
    'removeLabelIds': []
}

В любом случае я получаю ту же ошибку.

1 Ответ

0 голосов
/ 11 сентября 2018

Как насчет этой модификации?

Очки модификации:

  • Пожалуйста, измените написание переменных для Gmail.Users.Messages.modify().
    • Изменить messageId на msgId.
    • Изменить addlabel на addLabel.
    • Изменить removelabel на removeLabel.
  • Вы можете использовать Gmail.Users.Messages.modify() как Gmail.Users.Messages.modify(resource, userId, id). Это можно увидеть по автозаполнению редактора скриптов.

Модифицированный скрипт:

От:
var msgLabel = Gmail.Users.Messages.modify({
  'userId': 'me',
  'id': messageId,
  'resource':{
    'addLabelIds': [addlabel],
    'removeLabelIds': [removelabel]
  }
})
Для того, чтобы:
var msgLabel = Gmail.Users.Messages.modify({
  'addLabelIds': [addLabel],
  'removeLabelIds': [removeLabel]
}, 'me', msgId);

Примечание:

  • В этом измененном сценарии предполагается, что Gmail API включен в Advanced Google Services и консоли API.

Справка:

Если я неправильно понимаю ваш вопрос, извините.

...