Google云端硬盘文件夹中有两个电子表格。如何通过一封电子邮件从多个电子表格发送数据
到目前为止,当我执行脚本时,它将包含2个工作簿,因此会发送2封电子邮件。我希望将两个电子表格通过一封电子邮件发送。现在,它正在发送两封单独的电子邮件。
function checkSales(){
var file, files = DriveApp.getFolderById(
"1QoHyZrhSwqNYaOfgWu7X8WnY-wj9KMRU").getFilesByType(MimeType.GOOGLE_SHEETS)
while (files.hasNext()) {
file = files.next();
Logger.log(file)
var activeSpreadSheet = SpreadsheetApp.open(file);
var sheets = activeSpreadSheet.getSheets();
var body='';
//loop through sheets to look for value
for (var sheetIndex = 0; sheetIndex < sheets.length; sheetIndex++) {
var sheet = sheets[sheetIndex]
var data = sheet.getDataRange().getValues();
var resultArr=[];
var xTitle = 'Part Numbers'; // XAxis Title
var yTitle = 'Quantity'; // YAxis Title
var column = sheet.getRange("A1:A22");
column.setNumberFormat("@");
//To Loop through the whole data Rows
for(var i=1;i<data.length;i++)
{
//Takes columns from L to S (To loop through the Columns)
for(var j=11;j<19;j++)
{
var cellVal=data[i][j];
Logger.log(cellVal)
if(cellVal>0)
{
//Stores the Part No, Month Header Value of the Column, Cell
//Value which is greater then 0
resultArr.push([data[i][0],data[0][j],cellVal])
}
}
}
if(resultArr.length>0)
{
var subject = "Alert " + " " + activeSpreadSheet.getName()
+ " " + " >6MO";
//Creates a body through the obtained values
body += "<br>" + "<b>"+ sheet.getName() + "</b>" + "<br>";
for(var m=0;m<resultArr.length;m++){
body+= "For Part No "+resultArr[m][0].toString()+" and Month
"+resultArr[m][1].toString()+", Value is "+resultArr[m]
[2].toString()+"<br>"; // Modified
}
}
}
//send email
MailApp.sendEmail({to:"123@gmail.com",subject:subject,
htmlBody:body });
}
}
答案 0 :(得分:2)
如果我的理解是正确的,那么该修改如何?请认为这只是几个答案之一。
MailApp.sendEmail()
移到while循环的外部。body
。subject
具有电子表格名称。为此,subject
被移至while循环的外部。function checkSales(){
var file, files = DriveApp.getFolderById("1QoHyZrhSwqNYaOfgWu7X8WnY-wj9KMRU").getFilesByType(MimeType.GOOGLE_SHEETS)
var body = ''; // Added
var subject = []; // Added
while (files.hasNext()) {
file = files.next();
var activeSpreadSheet = SpreadsheetApp.open(file);
var sheets = activeSpreadSheet.getSheets();
for (var sheetIndex = 0; sheetIndex < sheets.length; sheetIndex++) {
var sheet = sheets[sheetIndex];
var data = sheet.getDataRange().getValues();
var resultArr = [];
var xTitle = 'Part Numbers'; // XAxis Title
var yTitle = 'Quantity'; // YAxis Title
var column = sheet.getRange("A1:A22");
column.setNumberFormat("@");
for (var i=1;i<data.length;i++) {
for (var j=11;j<19;j++) {
var cellVal = data[i][j];
if (cellVal > 0) {
resultArr.push([data[i][0],data[0][j],cellVal]);
}
}
}
if (resultArr.length>0) {
var spreadsheetName = activeSpreadSheet.getName(); // Added
subject.push(spreadsheetName); // Modified
body += "<br>" + "<b>"+ sheet.getName() + "(" + spreadsheetName + ")" + "</b>" + "<br>";
for (var m=0;m<resultArr.length;m++) {
body+= "For Part No "+resultArr[m][0].toString()+" and Month "+resultArr[m][1].toString()+", Value is "+resultArr[m][2].toString()+"<br>";
}
}
}
}
if (subject.length > 0) {
var s = "Alert " + " " + subject.join(",") + " " + " >6MO"; // Added
MailApp.sendEmail({to: "123@gmail.com", subject: s, htmlBody: body}); // Added
}
}
如果我误解了您的问题,而这不是您想要的结果,我深表歉意。