首页 > 编程问答 >每日销售报告自动化_在特定时间(每日 10:00 下午)发送邮件

每日销售报告自动化_在特定时间(每日 10:00 下午)发送邮件

时间:2024-06-07 14:56:42浏览次数:29  
标签:google-sheets google-apps-script automation

从主数据表中提取数据后,我需要在每天下午 10:00 按特定格式发送每日销售报告。

使用示例数据测试 google 表链接。

https://docs.google.com/spreadsheets/d/1nOpdDY6A_-Pz8Zj8lutpli1RDDv1V8Cc4dTgi-DEpks/edit#gid=0

在上述工作表中,工作表一 " All Week Revenue - MasterSheet " 是一个重要的工作表,用于收集来自不同销售团队的数据。工作表二 " DAILY SALES REPORT " 是每日销售报告格式。需要发送到特定的电子邮件 ID(不确定是否可以发送到 whatsapp 号码)。

目前,我正在为中心计数 Coloumn Q 制作数据透视表。 然后为 Coloumn C & D 创建另一个数据透视表,以获得 Coloumn C 的总计数,然后是 Coloumn C & D 的总和。 接下来,我通过将这些数据复制粘贴到新的电子表格中来合并拖拽数据,并在每天晚上 10:00 通过 whatsapp 发送报告

报表二 每日销售报表 中给出了每日报表的格式。 需要根据当前日期(今天)从工作表一 All Week Revenue - MasterSheet 中提取" coloumn C, D, G & Q "的详细信息,即" coloumn H "到工作表二 DAILY SALES REPORT .

    列Q 应为行首,其余所有列应向下排列。
  • Coloumn C 应为唯一值
  • 栏 D 应为每个标题下的计数
  • 栏目D 的总计数,然后是 栏目D & G 的总和,最后是 栏目D & G 的总和。

该报告应在晚上 10:00(印度标准时间)自动发送到指定的电子邮件 ID。


以下是使用 Google Apps 脚本来实现所需功能的步骤:

1. 创建 Google Apps 脚本

  • 打开的 Google 表格文档。
  • 点击 "工具" > "脚本编辑器"。
  • 将以下代码复制并粘贴到脚本编辑器中:
function sendDailySalesReport() {
  // 获取电子表格和工作表
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var masterSheet = spreadsheet.getSheetByName("All Week Revenue - MasterSheet");
  var reportSheet = spreadsheet.getSheetByName("DAILY SALES REPORT");

  // 获取当前日期
  var today = new Date();
  var dd = String(today.getDate()).padStart(2, '0');
  var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
  var yyyy = today.getFullYear();
  today = yyyy + '-' + mm + '-' + dd;

  // 获取主数据表中的数据范围
  var dataRange = masterSheet.getRange("C2:Q" + masterSheet.getLastRow());
  var data = dataRange.getValues();

  // 过滤当天数据
  var todaysData = data.filter(function(row) {
    return row[10] == today; // 假设日期在第11列 (H列)
  });

  // 创建汇总数据结构
  var summaryData = {};
  for (var i = 0; i < todaysData.length; i++) {
    var row = todaysData[i];
    var center = row[16]; // 假设中心在第17列 (Q列)
    var title = row[2]; // 假设标题在第3列 (C列)
    var amount = parseFloat(row[3] || 0); // 假设金额在第4列 (D列)
    var gst = parseFloat(row[6] || 0); // 假设GST在第7列 (G列)

    if (!summaryData[center]) {
      summaryData[center] = {};
    }
    if (!summaryData[center][title]) {
      summaryData[center][title] = { count: 0, amount: 0, gst: 0 };
    }
    summaryData[center][title].count++;
    summaryData[center][title].amount += amount;
    summaryData[center][title].gst += gst;
  }

  // 清除报表工作表中的旧数据
  reportSheet.getRange("A2:G" + reportSheet.getLastRow()).clearContent();

  // 将汇总数据写入报表工作表
  var row = 2;
  for (var center in summaryData) {
    reportSheet.getRange("A" + row).setValue(center);
    row++;

    for (var title in summaryData[center]) {
      reportSheet.getRange("B" + row).setValue(title);
      reportSheet.getRange("C" + row).setValue(summaryData[center][title].count);
      reportSheet.getRange("D" + row).setValue(summaryData[center][title].amount);
      reportSheet.getRange("E" + row).setValue(summaryData[center][title].gst);
      reportSheet.getRange("F" + row).setValue(summaryData[center][title].amount + summaryData[center][title].gst);
      row++;
    }

    // 计算中心总计
    var centerTotalAmount = 0;
    var centerTotalGst = 0;
    for (var title in summaryData[center]) {
      centerTotalAmount += summaryData[center][title].amount;
      centerTotalGst += summaryData[center][title].gst;
    }
    reportSheet.getRange("C" + row).setValue("Total");
    reportSheet.getRange("D" + row).setValue(centerTotalAmount);
    reportSheet.getRange("E" + row).setValue(centerTotalGst);
    reportSheet.getRange("F" + row).setValue(centerTotalAmount + centerTotalGst);
    row += 2;
  }

  // 发送电子邮件报告
  var emailAddress = "[email protected]"; // 替换为的电子邮件地址
  var subject = "Daily Sales Report - " + today;
  var body = "Please find attached the daily sales report.";
  // 将报表工作表作为附件发送
  MailApp.sendEmail(emailAddress, subject, body, { attachments: [spreadsheet.getSheetByName('DAILY SALES REPORT').getAs('application/pdf').setName('Daily Sales Report')] });
}

// 设置定时触发器 (每天晚上 10:00 IST)
function createTrigger() {
  // 注意: Google Apps Script 使用 UTC 时间,印度标准时间为 UTC+5:30
  // 将时间调整为 UTC 时间 (下午 4:30 UTC)
  ScriptApp.newTrigger()
    .timeBased()
    .atHour(16)
    .everyDays(1)
    .create();
}  

2. 修改脚本

  • emailAddress 变量替换为的电子邮件地址。
  • 确保代码中的列索引与的实际数据匹配。
  • 如果需要,修改电子邮件主题和正文。

3. 保存并运行脚本

  • 点击 "保存" 图标。
  • 点击 "运行" 按钮,选择 "createTrigger" 函数,并授权脚本访问的电子表格和 Gmail 帐户。

注意:

  • 脚本将在每天下午 10:00 IST 自动运行,并将每日销售报告发送到指定的电子邮件地址。
  • 需要确保脚本已授权访问的电子表格和 Gmail 帐户。
  • 目前,没有直接方法可以通过 WhatsApp 发送电子邮件附件。 可以考虑使用第三方服务来实现此目的。

希望这可以帮助!如果有任何其他问题,请随时告诉我。

标签:google-sheets,google-apps-script,automation
From: 78590260

相关文章

  • 使用python uiautomation模块,结合多线程快速寻找控件
    文章目录1.形式一2.形式二1.形式一该方法使用多线程进行搜索,主线程不会等待所有子线程返回结果后再继续执行,而是在获取队列中第一个结果后立即继续执行。优势在于一旦有子线程找到结果,主线程就能立即继续执行;劣势在于未找到结果的子线程会持续搜索,直到达到设定的最大......
  • 【Network Automation系列】-- 第一章
    引言:本系列是根据《MasteringPythonNetworkingThirdEdition》翻译整理出来的,原著作者:EricChou,大家可以关注一下。随着网络工程领域的快速变化,我们无疑也经历了类似的变化。随着软件开发越来越多地集成到网络的各个方面、传统的命令行接口和垂直集成中,网络堆栈方法不再是管......
  • VMware Aria Automation Config 8.16 - Aria Automation 的软件配置管理与安全性
    VMwareAriaAutomationConfig8.16-AriaAutomation的软件配置管理与安全性请访问原文链接:https://sysin.org/blog/vmware-aria-automation-config/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgAriaAutomation的软件配置管理与安全性AriaAutomationConfi......
  • VMware Aria Automation 8.16 - 多云基础架构自动化平台
    VMwareAriaAutomation8.16-多云基础架构自动化平台Multi-CloudInfrastructureAutomationPlatform请访问原文链接:https://sysin.org/blog/vmware-aria-automation/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org现代基础架构自动化平台VMwareAriaAutomati......
  • VMware Aria Automation Orchestrator 8.16 - 现代工作流程自动化平台
    VMwareAriaAutomationOrchestrator8.16-现代工作流程自动化平台请访问原文链接:https://sysin.org/blog/vmware-aria-automation-orchestrator/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org现代工作流程自动化平台VMwareAriaAutomationOrchestratorVMwar......
  • uiautomation
    安装uiautomationpipinstalluiautomationInspect软件的使用Inspect是windows自带的软件,不需要单独安装,安装目录在:C:\ProgramFiles(x86)\WindowsKits\10\bin\10.0.19041.0\x64,不同的版本路径可能略微不同。可以将该目录添加到环境变量中,这样可以直接在cmd中输入inpsect......
  • VMware vRealize Automation 8.6 下载 - 现代基础架构自动化
    作者:gc,主页:www.sysin.orgVRealizeAutomation8.6|12October2021vRAEasyInstaller(ISO)build18747964vRAProduct(appliance)build18742031SaltStackConfigbuild18703476VRealizeAutomation8.5|19August2021vRAEasyInstaller(ISO)build18488288vR......
  • VMware vRealize Automation 8.3 发布 - 现代基础架构自动化
    vRealizeAutomation8.3|17March2021vRAEasyInstaller(ISO)build17556762vRAproduct(appliance)build17551690概述VMwarevRealizeAutomation是一个支持自助式多云环境的现代基础架构自动化平台。借助vRealizeAutomation,客户可以通过自助式自动化提高敏捷性、工......
  • VMware vRealize Automation 8.4 发布 - 现代基础架构自动化
    概述VMwarevRealizeAutomation是一个支持自助式多云环境的现代基础架构自动化平台。借助vRealizeAutomation,客户可以通过自助式自动化提高敏捷性、工作效率和效益,具体方法为:降低其IT环境的复杂性、精简IT流程并提供一个DevOps就绪型自动化平台。易于使用的混合云基础架......
  • VMware Aria Automation Orchestrator 8.12 - 现代工作流程自动化平台
    VMwareAriaAutomationOrchestrator8.12-现代工作流程自动化平台作者主页:sysin.org现代工作流程自动化平台VMwareAriaAutomationOrchestratorVMwareAriaAutomationOrchestrator(vRealizeOrchestrator)是一个现代工作流自动化平台,可简化和自动化复杂的数据中心基础架......