Методы с префиксом new
в расширенной службе служат для генерации пустых ресурсов объектов.Они существуют исключительно с целью завершения кода в редакторе скриптов приложений.Чтобы использовать их эффективно, вы должны установить требуемые свойства для объектов, созданных этими методами, а затем передать их методам, которые требуют этот ресурс.
Итак, в вашем случае вы бы создали сообщение следующим образом:
var messageResource = Gmail.newMessage();
messageResource.raw = Utilities.base64EncodeWebSafe([messageData]);
Затем вы передадите его методу вставки:
Gmail.Users.Messages.insert(messageResource, "me");
Они могуткажутся излишними, но некоторые могут найти ценным завершение кода на этих объектах ресурса.
Лично я склонен избегать их использования и просто передавать объекты по мере необходимости (как вы это делали в своем первоначальном примере).Как только вы узнаете необходимые свойства этих объектов ресурсов, вы можете отбросить эти «обучающие колеса» и просто использовать вместо них встроенные объекты.
Что касается этой проблемы:
Проблема в том, что когда вы передаете {format: "raw"} в качестве необязательного параметра методу get (), вы не можетедольше изучите свойства сообщения и получите доступ к свойству «полезной нагрузки».Если вместо этого вы передаете {format: "full"}, полезная нагрузка есть, но нет свойства "raw".
Это либо ситуация, либо ситуация с методом Gmail.Users.Messages.get()
.Если вы посмотрите на документацию , вы увидите, что вам нужно установить параметр формата, и, следовательно, вы не можете получить всю необходимую информацию за один вызов.Однако все, что вам нужно сделать, это сделать два звонка;один, где формат установлен на «полный» и другой, где формат установлен на «raw» , и тогда у вас будет то, что вам нужно.Код может быть не самым элегантным, но он достигнет ваших целей.
Для решения проблемы, указанной в вашем комментарии;Я подозреваю, что вам, возможно, придется использовать медиафайлы .Метод вставки имеет несколько подписей, как показано на снимке экрана ниже: Возможно, вам потребуется использовать 2-й или 3-й вариант для загрузки данных сообщения.Отредактируйте объект полезной нагрузки, измените строку темы и передайте ее в свой ресурс сообщения, а затем преобразуйте необработанные данные в BLOB-объект Utilities.newBlob([raw Byte[]])
(вам нужно преобразовать необработанную строку в кодировке base64 в байтовый массив, прежде чем преобразовать ее вBlob object) и передайте его в качестве 3-го параметра.Не уверен, что это сработает, но стоит попробовать.