Google Apps Scripts-извлечение данных из gmail в электронную таблицу
это первый скрипт, который я пытаюсь написать с нуля. До сих пор это было бесполезно, поэтому я собираюсь попросить о помощи.
случай: я получаю электронные письма подтверждения электронной коммерции от сайтов электронной коммерции без адреса электронной почты ответа. В теле письма они отправляют адрес электронной почты от покупателей. Я хочу отправить автоматическую почту на адрес электронной почты тела.
Как я планирую это сделать (любые предложения по устранению шагов будут благодарны).
используйте правило для помечайте входящие письма уникальным тегом.
используйте этот тег для идентификации писем в gmail со скриптом, идите один за другим и извлеките необходимую мне информацию. Используйте regex с содержимым тела электронной почты для извлечения адреса электронной почты, который мне нужен для отправки автоматических писем. План состоит в том, чтобы получить: тему, дату, электронную почту от тела.
запишите всю эту информацию в электронную таблицу.
избавиться от уникальных тегов для предотвращения дублирования работает.
затем используйте форму Mule addon для отправки писем из электронной таблицы.
до сих пор я имел дело с шагами 1 (легко), и был stuggling с шагами 2 и 3 (im не кодер, я могу читать, undestrand и hack. писать с нуля-совсем другое дело). Я занималась с 4 до Я думаю, что это лучший способ справиться с этим.
со скриптом я извлекаю информацию в электронную таблицу, с аддоном я использую информацию из электронная таблица для отправки электронной почты.
этот код я написал до сих пор. Я оставил часть regex на потом, потому что я даже не могу ничего записать в электронную таблицу. как только я получу эту работу, я начну работать в регулярном выражении и "удалить ярлык" аспекты сценария.
function myFunction() {
function getemails() {
var label = GmailApp.getUserLabelByName("Main tag/subtag");
var threads = label.getThreads();
for (var i = 0; i < threads.length; i++) {
var messages=threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var message=messages[j];
var subject=message.getSubject();
tosp(message);
}
}
}
function tosp(message){
var body=message.getBody()
var date=message.getDate();
var subject=message.getSubject();
var id= "my spreasheet id";
var ss = SpreadsheetApp.openById(id);
var sheet = ss.getActiveSheet();
sheet.appendRow(subject,date,body);
}
}
любая помощь будет оценили.
спасибо Себастьян!--2-->
1 ответов
ниже приведен код, который я написал и протестировал, который отлично выполняет шаги 2, 3 и 4, упомянутые вами.
function myFunction() {
var ss = SpreadsheetApp.getActiveSheet();
var label = GmailApp.getUserLabelByName("MyLabel");
var threads = label.getThreads();
for (var i=0; i<threads.length; i++)
{
var messages = threads[i].getMessages();
for (var j=0; j<messages.length; j++)
{
var msg = messages[j].getBody();
var sub = messages[j].getSubject();
var dat = messages[j].getDate();
ss.appendRow([msg, sub, dat])
}
threads[i].removeLabel(label);
}
}
одним из недостатков вашего кода было то, что appendRow
функция принимает массив элементов, указанных в [ ]
скобках.
в зависимости от того, где вы прикрепляете этот скрипт, ваша строка кода:
var ss = SpreadsheetApp.openById(id);
не требуется, если скрипт пишется в Редакторе скриптов электронной таблицы, где вы хотите эти письма для регистрации. Однако, если в этой таблице несколько листов, вы можете заменить мою строку
var ss = SpreadsheetApp.getActiveSheet();
by
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
другое предложение заключается в том, что текущий код даст вам сообщения в формате HTML. Следовательно, если вы хотите получить сообщение в виде обычного текста, как вы его видите, использовать:
var msg = messages[i].getPlainBody();
теперь вы можете написать другую функцию для regex и передать сообщение msg
для этого. Надеюсь, это поможет!