从主数据表中提取数据后,我需要在每天下午 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