【问题标题】:Import XLS from Gmail - sheet based on yesterdays date从 Gmail 导入 XLS - 基于昨天日期的工作表
【发布时间】:2021-02-05 13:25:20
【问题描述】:

我有以下脚本可以从我的电子邮件中导入 XLS 附件。

目前是导入到指定的sheet名中(下例为“xxxx”)。

我希望它根据脚本运行前一天导入工作表名称(因为它以 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);
  }
}

【问题讨论】:

    标签: google-apps-script google-sheets google-drive-api


    【解决方案1】:

    解释:

    你想:

    • 获取昨天的日期:

      const date = new Date();
      date.setDate(date.getDate() - 1);
      
    • 将其格式化为DD/MM/YY 并将其分配给sheetName

      const sheetName =  Utilities.formatDate(date, timezone, "dd/MM/YY")
      
    • 检查具有此名称的工作表是否存在,否则创建它:

      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
      //
      
    }
    

    参考资料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      相关资源
      最近更新 更多