从多个工作簿/工作表中提取范围

时间:2019-06-12 07:16:05

标签: javascript google-apps-script google-sheets

我有一个单元格区域(例如:L1:S22),当活动电子表格中特定范围内的值大于0时,它将发送电子邮件警报

到目前为止,它仅是从有效电子表格范围发送的。我希望从存储在文件夹中的所有其他工作簿中调用它,并根据该电子邮件发送电子邮件

function CheckSales(){

var app = SpreadsheetApp;
var activeSheet = app.getActiveSpreadsheet().getActiveSheet();

var data=activeSheet.getDataRange().getValues();

var emailAddress=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("B2").getValue();
var resultArr=[];

//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 = 'Range exceeded Alert';

    //Creates a body through the obtained values
    var body='';
    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>";
       }

      MailApp.sendEmail({to:emailAddress,subject:subject,htmlBody:body});
   }

}

现在输出显示的零件号在6个月后超过了值。

对于部件号60009257001和每月7MO,价值为800 对于零件号60009259007和月份12MO,值是28032 对于零件号60009260011和月份> 18MO,值是74670 对于零件号60009260012和月份12MO,值是17600 对于零件号60009260013和每月10MO,值是26389

我希望输出显示不同工作簿中的所有零件号

2 个答案:

答案 0 :(得分:1)

Contribute to pull requests

答案 1 :(得分:0)

您可以使用“数据”变量,以与此处相同的方式遍历不同的数据范围。

例如,

var data=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Battery').getDataRange().getValues();

//For Loop for data

data2=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Other Sheet").getDataRange().getValues();

//for Loop for data2