У меня небольшая проблема с форматированием. Я использую эту программу для отслеживания своих заказов на покупку, и я настроил ее, чтобы отправлять мне все заказы на покупку, размещенные каждый день, а электронное письмо выглядит следующим образом:
А затем я настроил лист Google со следующим кодом, чтобы вытащить электронное письмо в лист:
var SEARCH_QUERY = "label:inbox is:unread from:[SERVER EMAIL]";
function getEmails_(q) {
var emails = [];
var threads = GmailApp.search(q);
for (var i in threads) {
var msgs = threads[i].getMessages();
for (var j in msgs) {
emails.push([msgs[j].getBody().replace(/<.*?>/g, '\n')
.replace(/^\s*\n/gm, '').replace(/^\s*/gm, '').replace(/\s*\n/gm, '\n')
]);
}
}
return emails;
}
function appendData_(sheet, array2d) {
sheet.getRange(sheet.getLastRow() + 1, 1, array2d.length, array2d[0].length).setValues(array2d);
}
function saveEmails() {
var array2d = getEmails_(SEARCH_QUERY);
if (array2d) {
appendData_(SpreadsheetApp.getActiveSheet(), array2d);
}
}
Это отлично работает для импорта данных, но, к сожалению, все это в ячейку A2 и выглядит так:
Есть ли способ сделать так, чтобы это было больше похоже на сетку в электронном письме? Когда я помещаю его в слабину, у него нет возможностей форматирования, потому что все это в одной ячейке. Вот код, который я использую, чтобы вставить это в Slack:
function triggerSlackRequestProgress(channel, msg) {
var slackWebhook = "[SLACK WEBHOOK]";
var payload = { "channel": channel, "text": msg, "link_names": 1, "username": "Email Test", "icon_emoji": ":cowboykeen:" };
var options = { "method": "post", "contentType": "application/json", "muteHttpExceptions": true, "payload": JSON.stringify(payload) };
Logger.log(UrlFetchApp.fetch(slackWebhook, options));
}
function notifySlackChannelOfProgress() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
if (!sheet.getRange("A2").getValue()) return;
var channel = getChannel();
var msg = createProgressMessage(sheet);
triggerSlackRequestProgress(channel, msg);
}
function isTest() {
return false;
}
function getChannel() {
if (isTest()) {
return "[SLACK CHANNEL]";
} else {
return "[SLACK CHANNEL]";
}
}
и выглядит это так:
Но я бы предпочел иметь возможность редактировать его, чтобы он выглядел так. Где Дата заказа, Запрошенный, Описание и т. д. Находятся в отдельных ячейках, чтобы я мог их отформатировать:
Любая помощь с ним будет принята с благодарностью!
В вашем скрипте array2d
, полученный getEmails_(SEARCH_QUERY)
, используется для помещения в электронную таблицу. В это время значения помещаются в одну ячейку. Думаю, что решение вашего вопроса в getEmails_()
. Но я не могу предложить прямого решения вашего вопроса из-за отсутствия данных. Можете ли вы подтвердить это и изменить сценарий? Мне очень жаль, что я не умею.
@Tanaike, спасибо! Не нужно извиняться, я очень ценю любую помощь, которую могу получить! Помогло бы, если бы я разместил лист Google?
Спасибо за ответ. Если вы хотите преобразовать значения электронной таблицы в правильное положение, потребуется образец электронной таблицы. Если вы хотите напрямую поместить значения из электронной почты в правильную позицию электронной таблицы, значения электронной почты являются обязательными. Но я думаю, что, поскольку данные электронной почты содержат личную информацию, я не могу решить.
@Tanaike Вот ссылка: ссылка Я думаю, что любой способ сработает. Вероятно, это было бы более чистым в долгосрочной перспективе, если бы он был импортирован в лист Google в правильном форматировании, но если это невозможно, то его автоформатирование один раз в листе тоже будет работать. Еще раз спасибо за вашу помощь!
Спасибо за ответ. Я не могу получить доступ к общей таблице. Не могли бы вы это подтвердить?
@Tanaike Есть идеи для этого? Я очень признателен за вашу помощь с моим последним вопросом. Спасибо!