Я пытаюсь получить снимок экрана электронной почты (Gmail) с определенной строкой темы, используя скрипт приложений Google, в Google Таблицы. Я нахожу источник, который может получить скриншоты сайта. Вот пример кода:
var siteUrl = "### URL you want to retrieve a screenshot. ###";
var url ="https://www.googleapis.com/pagespeedonline/v4/runPagespeed?screenshot=true&fields=screenshot&url=" +
encodeURIComponent(siteUrl);
var res = UrlFetchApp.fetch(url).getContentText();
var obj = JSON.parse(res);
var blob = Utilities.newBlob(Utilities.base64DecodeWebSafe(obj.screenshot.data),
"image/png",
"sample.png"
);
DriveApp.createFile(blob);
Мы можем получить потоки, используя следующие строки для конкретной темы:
var threads = GmailApp.search('subject:"Daily Report"')
var msgs = GmailApp.getMessagesForThreads(threads);
Но из-за моих навыков новичка я не могу сшить их, чтобы получить скриншот этого письма с конкретной темой. Интересно, есть ли способ обойти это. Любое руководство будет высоко оценено. Спасибо.
Спасибо за ваш ответ, да, я просто хочу скриншот интерфейса, который мы видим, когда открываем любое электронное письмо.
Спасибо за ответ. Что касается I just want the screenshot of the interface which we see when we open any email.
, я думаю, что на текущем этапе это невозможно, потому что URL-адрес сообщения Gmail не может быть общедоступным. Прошу прощения за это.
есть ли обходной путь для этого, потому что мы не делимся им публично, мы просто авторизуем скрипт, используя наш личный адрес электронной почты, для которого мы хотим сделать снимок экрана
Кажется, что когда используется «pagespeedapi.runpagespeed», URL-адрес должен быть общедоступной ссылкой. Но URL-адрес Gmail не является общедоступной ссылкой. Таким образом, когда мой пример сценария используется с URL-адресом сообщения Gmail, извлекается экран входа в систему. Итак, я спросил о моем обходном пути. Но из yes, I just want the screenshot of the interface which we see when we open any email.
я понял, что мой обходной путь не подходит для вашей ситуации. Прошу прощения за это.
Может быть, мы можем поискать другой API, помимо использования PageSpeed API.
Спасибо за ответ. Например, когда используется обходной путь, какие значения вы хотите включить в электронное письмо в виде изображения?
what values do you want to include in the Email as an image?
, мы можем включить тему письма и тело письма.
Спасибо за ответ. Из вашего ответа я предложил обходной путь в качестве ответа. Не могли бы вы подтвердить это? Если это было не полезно, прошу прощения.
Я считаю, что ваша цель заключается в следующем.
На текущем этапе для использования «pagespeedapi.runpagespeed» требуется использовать общедоступную ссылку сайта. Но, к сожалению, URL сообщения в Gmail не является общедоступной ссылкой. Таким образом, ваша цель не может быть достигнута напрямую с помощью «pagespeedapi.runpagespeed».
Когда я спросил вас о ваших необходимых значениях в электронной почте в виде изображения, вы сказали we can include email subject line, and email body.
. Исходя из этого, в этом ответе в качестве обходного пути я хотел бы использовать следующий поток.
Charts.newTableChart()
.Когда этот поток отражен в образце сценария, он становится следующим.
// This is from your showing script.
var threads = GmailApp.search('subject:"Daily Report"');
var msgs = GmailApp.getMessagesForThreads(threads);
// I added the blow script.
var subject = msgs[0][0].getSubject();
var htmlBody = msgs[0][0].getBody();
var imageBlob = Charts.newTableChart().setDataTable(
Charts.newDataTable()
.addColumn(Charts.ColumnType.STRING, '')
.addRow([`<p style="font-size: 150%">Subject: ${subject}</p>`])
.addRow([htmlBody])
.build()
)
.setOption('allowHtml', true)
.setDimensions(1024, 1024)
.build().getBlob();
// Here, the retrieved image is created as an image file in the root folder. By this, you can confirm the output image. The filename is "sample.png".
DriveApp.createFile(imageBlob.setName("sample.png"));
В этом примере скрипта используется первое сообщение из msgs
вашего скрипта.
Когда этот скрипт запускается, первое сообщение извлекается из msgs
, а тема и тело HTML извлекаются из сообщения. А затем они преобразуются в изображение PNG в виде большого двоичного объекта. Когда вы выводите большой двоичный объект в виде файла изображения, вы можете видеть, что тема и тело HTML отображаются по порядку.
В этом образце размер шрифта темы составляет 150%. Пожалуйста, измените это для вашей реальной ситуации.
В этом образце размер изображения составляет 1024 x 1024. Пожалуйста, измените это для вашей реальной ситуации.
Круто, ты легенда. Он работает по назначению. Большое спасибо еще раз
@Roomi Спасибо за ответ и тестирование. Я рад, что ваша проблема была решена. И тебе спасибо.
Во-первых, я приношу свои извинения за то, что мой пример сценария оказался бесполезен в вашей ситуации. Что касается вашего сценария показа, я обновил его 9 декабря 2021 года. Пожалуйста, будьте осторожны с этим. Но, к сожалению, на текущем этапе скриншот сообщения из Gmail нельзя получить напрямую с помощью «Метода: pagespeedapi.runpagespeed». Потому что URL-адрес сообщения Gmail не может быть общедоступным. Таким образом, в этом случае требуется использовать обходной путь. Но я не могу представить ваш ожидаемый результат
get the screenshot of the (Gmail) email
. Например, скриншот, который вам нужен, это только тело HTML?