从 Gmail 导入 XLS - sheet 基于昨天的日期
Import XLS from Gmail - sheet based on yesterdays date
我有以下脚本可以从我的电子邮件中导入 XLS 附件。
目前,它将其导入到指定的sheet名称中(在下面的示例中为“xxxx”)。
我希望它根据脚本 运行 的前一天导入到 sheet 名称(因为它在 DD/MM/YY 中报告前一天的数据]) 格式。
function ImportXLSFromGmail_Stats() {
var sheetName = "xxxx";
var threads = GmailApp.search("from:test@test.com subject:Email Subject");
var messages = threads[0].getMessages();
var message = messages[messages.length - 1];
var attachment = message.getAttachments()[0];
attachment.setContentTypeFromExtension();
var data = [];
(attachment.getContentType() == MimeType.MICROSOFT_EXCEL || attachment.getContentType() == MimeType.MICROSOFT_EXCEL_LEGACY)
var tempFile = Drive.Files.insert({title: "temp_Availability", mimeType: MimeType.GOOGLE_SHEETS}, attachment).id;
data = SpreadsheetApp.openById(tempFile).getSheets()[0].getDataRange().getValues();
Drive.Files.trash(tempFile);
if (data.length > 0) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
}
}
解释:
您想:
获取昨天的日期:
const date = new Date();
date.setDate(date.getDate() - 1);
将其格式化为 DD/MM/YY
并将其分配给 sheetName
:
const sheetName = Utilities.formatDate(date, timezone, "dd/MM/YY")
检查是否存在同名的sheet,否则创建:
const sheets = ss.getSheets().map(sh=>sh.getName());
if(!sheets.includes(sheetName)){
ss.insertSheet(sheetName);
};
解决方案:
function ImportXLSFromGmail_Stats() {
const ss = SpreadsheetApp.getActive();
const date = new Date();
const timezone = ss.getSpreadsheetTimeZone();
date.setDate(date.getDate() - 1);
const sheetName = Utilities.formatDate(date, timezone, "dd/MM/YY"); // logs 04/02/21
const sheets = ss.getSheets().map(sh=>sh.getName());
if(!sheets.includes(sheetName)){
ss.insertSheet(sheetName);
};
//
// rest of your code
//
}
参考文献:
我有以下脚本可以从我的电子邮件中导入 XLS 附件。
目前,它将其导入到指定的sheet名称中(在下面的示例中为“xxxx”)。
我希望它根据脚本 运行 的前一天导入到 sheet 名称(因为它在 DD/MM/YY 中报告前一天的数据]) 格式。
function ImportXLSFromGmail_Stats() {
var sheetName = "xxxx";
var threads = GmailApp.search("from:test@test.com subject:Email Subject");
var messages = threads[0].getMessages();
var message = messages[messages.length - 1];
var attachment = message.getAttachments()[0];
attachment.setContentTypeFromExtension();
var data = [];
(attachment.getContentType() == MimeType.MICROSOFT_EXCEL || attachment.getContentType() == MimeType.MICROSOFT_EXCEL_LEGACY)
var tempFile = Drive.Files.insert({title: "temp_Availability", mimeType: MimeType.GOOGLE_SHEETS}, attachment).id;
data = SpreadsheetApp.openById(tempFile).getSheets()[0].getDataRange().getValues();
Drive.Files.trash(tempFile);
if (data.length > 0) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
}
}
解释:
您想:
获取昨天的日期:
const date = new Date(); date.setDate(date.getDate() - 1);
将其格式化为
DD/MM/YY
并将其分配给sheetName
:const sheetName = Utilities.formatDate(date, timezone, "dd/MM/YY")
检查是否存在同名的sheet,否则创建:
const sheets = ss.getSheets().map(sh=>sh.getName()); if(!sheets.includes(sheetName)){ ss.insertSheet(sheetName); };
解决方案:
function ImportXLSFromGmail_Stats() {
const ss = SpreadsheetApp.getActive();
const date = new Date();
const timezone = ss.getSpreadsheetTimeZone();
date.setDate(date.getDate() - 1);
const sheetName = Utilities.formatDate(date, timezone, "dd/MM/YY"); // logs 04/02/21
const sheets = ss.getSheets().map(sh=>sh.getName());
if(!sheets.includes(sheetName)){
ss.insertSheet(sheetName);
};
//
// rest of your code
//
}
参考文献: