使用循环为 MailApp 构建消息

Using loops to build a message for MailApp

我有一个程序逐行执行电子表格,如果 TotalSOH <= MinSOH 则构建两个数组,即:PalletNo[j] & SOH[j]。 我可以通过手动循环数组在我的 MailApp 函数中 return PalletNo[j] & SOH[j] 的每个索引作为消息(参考下面代码中的“消息”变量)所以我知道基本代码有效,但是我想创建一个循环以便它为我执行此操作,因为将来数组可能比两个元素大很多。

我希望消息被阅读(每一行);

托盘号[0] SOH[0]

托盘号[1] SOH[1]

PalletNo[2] SOH[2],等等,等等

有人可以帮忙吗?即使是一些方向也很好,不一定是答案。

我曾尝试在“message”变量中甚至在 MailApp 函数本身中创建一个 for 循环,但这会产生语法问题。

谢谢你的帮助,克里斯。

function LowT4KANBANSOHEmail() 
{
  
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName ('T4 Pallet (SOH) (Power Bi)');
  
  var now = new Date();
  var startRow = 1;
  var numRows = sheet.getLastRow();
  var dataRange = sheet.getRange(startRow, 1, numRows, sheet.getLastColumn());
  var data = dataRange.getValues();
  var j = 0;  
  
  var PalletNo = Array();
  var SOH = Array();

      for (var i = 0; i < data.length; ++i)
      {
        var row = data[i];  
        var TotalSOH = row[3];
        var MinSOH = row [4];

        if (TotalSOH <= MinSOH){
        PalletNo[j] = row[0];
        SOH[j] = row[3];
        j=j+1;
        }else
        {
        }
      }//End of for loop 
  
  var message = 
  PalletNo[0]+
  " (x"+
  SOH[0]+
  ")"+
  "\n"+
  PalletNo[1]+
  " (x"+
  SOH[1]+
  ")"+
  "\n";
  
  MailApp.sendEmail("emailaddress",
                    "Subject",
                     message
                    );
  
}//End of function

我已经解决了我自己的问题。

我也是 Javascript 和这个论坛的新手,我想我应该将答案反馈给社区以供将来参考,以防其他人遇到类似问题。作为一个初学者,很难知道如何贡献,而不是觉得你总是在问问题。

我创建了一个新数组,每个 element/index 代表最终消息中的行号。为了拆分每一行,我使用了 .join 功能。

代码在下面(部分语法可能有误,因为我在删除机密信息时可能不小心删除了一些);

function Answer() 
{
  
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName ('Spreadsheet');
  
  var now = new Date();
  var startRow = 1;
  var numRows = sheet.getLastRow();
  var dataRange = sheet.getRange(startRow, 1, numRows, sheet.getLastColumn());
  var data = dataRange.getValues();
  var j = 0;  
  
  var PalletNo = Array();
  var SOH = Array();
  var PalletNoSOH = Array();
  
      for (var i = 0; i < data.length; ++i)

      {
        var row = data[i];  
        var TotalSOH = row[3];
        var MinSOH = row [4];

        if (TotalSOH <= MinSOH){
        PalletNo[j] = row[0];
        SOH[j] = row[3];
        PalletNoSOH[j] = (PalletNo[j].toString() + " (x" + SOH[j].toString() + ")");        
        j=j+1;
        }else
        {
        }
      }//End of for loop 

  MailApp.sendEmail("emailaddress",
                    "Subject",
                    PalletNoSOH.join("\n")
                    );
  
}//End of function