Я искал ответ на этот вопрос и до сих пор нашел все вокруг него, но не то, что может помочь мне понять, что я делаю неправильно.Каждое утро я получаю отчет оракула, который отправляет электронное письмо с выводом отчета в виде ссылки на лист Google.Я могу сопоставить каждое значение, которое я ищу, за исключением значения ссылки, которое соответствует, когда я использую regex.101.скрипт, который я использую, является модифицированной версией скрипта, который я видел в нескольких постах, и он работает, ИСКЛЮЧАЯ, когда я пытаюсь сопоставить ссылку.из отчета имя и детали в целях безопасности.Я могу вытащить все остальное просто отлично, и он записывает на лист, но ссылка возвращается как Нет ссылки, и Регистратор возвращает ноль.
Идентификатор запроса: 854632157 Имя отчета: Имя отчета и Invoice_Number_854632157 Ссылка на отчет: https://drive.google.com/open?id=id файла, хранящегося на диске
Я могу поместить все содержимое электронной почты в Regex, и оно идеально совпадает до тех пор, пока я не добавлю требуемый '/' до и после.но как только я запускаю программу в скрипте приложений, она возвращает все, кроме последнего значения.~~ Edit ~~
Публикация измененного рабочего скрипта на случай, если кто-то другой обнаружит эту или подобную проблему.надеюсь, я делаю это правильно, если нет, просто дайте мне знать.
function parseEm(start) {
start = start || 0;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Results");
var label = sheet.getRange('B2').getValue();
var threads = GmailApp.search("Label:" + label, 1, 5)
for (var i = 0; i < threads.length; i++) {
// Get the first email message of a thread
var tmp,
message = threads[i].getMessages()[0],
subject = message.getSubject(),
content = message.getPlainBody(),
str = message.getRawContent();
// Get the plain text body of the email message
// use getRawContent() to parse link from HTML
// match each requirement using constant values paired with regex
if (content) {
//Request ID:
tmp = content.match(/Request ID:\s*([A-Za-z0-9\s]+)(\r?\n)/);
var ID = (tmp && tmp[1]) ? tmp[1].trim() : 'No report id';
//Report Name:
tmp = content.match(/Report Name: \s*([A-Za-z0-9@.]+)/);
var Name = (tmp && tmp[1]) ? tmp[1] : 'No report name';//.trim()
//Report Link :
var regex = /(Report Link : (http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?)/;
tmp = str.match(regex);
var link = (tmp && tmp[1]) ? tmp[1] : 'No link';
//replace search value with blank
var results = link.replace(/Report Link : /i, ' ');
Logger.log("Link" + link);
Logger.log("Results" + results);
Logger.log([ID, Name, subject, results]);
//write to sheet
sheet.appendRow([ID, subject, results]);
} // End if
} // End for loop
}
Это выведет следующее: клип из прикрепленного листа Google