Мой текущий проект состоит в том, чтобы взять набор писем из моей учетной записи Gmail и создать из них книгу, где каждое письмо является главой. Я написал фрагмент сценария Google Script, который успешно извлекает тему, дату и основной текст из всех электронных писем под определенным ярлыком и записывает их в Документ Google. Это не совсем идеально, так как я бы предпочел, чтобы в конечном итоге весь этот текст был в уценке или в LaTeX для более тщательного форматирования, но я только знал, как писать в Google Do c на основе Gmail API.
Самый быстрый способ для меня от A до B - выяснить, как изменить этот код, чтобы он записывал текст в файл CSV, содержащий столбцы subject
, date
и body
. Оттуда я могу обработать и разобрать его в LaTeX и назначить вместо него необходимые стили и форматы заголовков; Тем не менее, я не вижу большого руководства по этому формату файлов в API. Любое руководство о том, как адаптировать этот скрипт для этой цели, будет очень кстати. Спасибо.
function collectLetters() {
var fileName = 'OUTPUT_GOOGLE_DOC_FILENAME';
var labelName = 'MY_LABEL';
var timeZoneName = 'GMT'
var dateFormat = "dd | MM | yyyy"
var docBody;
var subject;
var date;
var body;
var message;
var num;
var datePar;
var bodyPar;
var subjectPar;
var numPar;
// get the handle for label
var label = GmailApp.getUserLabelByName(labelName);
var threads = label.getThreads();
// Create a new Google Doc
var doc = DocumentApp.create(fileName);
// get all the threads from label
for (var i = threads.length-1; i >= 0; i--) {
// EXTRACT FROM EMAIL: date, subject and body
message = threads[i].getMessages()[0];
subject = message.getSubject();
date = Utilities.formatDate(message.getDate(), timeZoneName, dateFormat)
body = message.getPlainBody().replace(/\r\n\r\n/gm,'aaaLINEBREAKERaaa').replace(/\r\n/gm,' ').replace(/ /gm,' ')
var splitBody = body.split('aaaLINEBREAKERaaa');
// APPEND TO GOOGLE DOC: Date (as Header)
datePar = doc.getBody().appendParagraph(date);
datePar.setHeading(DocumentApp.ParagraphHeading.HEADING1);
// APPEND TO GOOGLE DOC: Subject (as Subtitle)
if (subject.length > 0) {
subjectPar = doc.getBody().appendParagraph(subject);
}
else{
subjectPar = doc.getBody().appendParagraph("no subject");
}
subjectPar.setHeading(DocumentApp.ParagraphHeading.SUBTITLE);
// APPEND TO GOOGLE DOC: Body (as Normal)
docBody = doc.getBody()
splitBody.forEach(function (paragraphText) {
this.appendParagraph(paragraphText).setHeading(DocumentApp.ParagraphHeading.NORMAL);
}, docBody);
// Start a new page
doc.getBody().appendPageBreak();
//Logger.log(subject);
}
}