Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 工作表应用程序脚本-循环要作为电子邮件发送的行_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 工作表应用程序脚本-循环要作为电子邮件发送的行

Javascript 工作表应用程序脚本-循环要作为电子邮件发送的行,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我正在使用以下代码从工作表发送电子邮件,但我有一个问题 我无法移动到发送列=“是”所在的下一个迭代,即:只希望包含发送列=“是”所在的行 提前感谢您的帮助 函数sendmail(){ //设置功能 var ActiveSheet=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var StartRow=2; var RowRange=ActiveSheet.getLastRow()-StartRow+1; var WholeRan

我正在使用以下代码从工作表发送电子邮件,但我有一个问题

我无法移动到发送列=“是”所在的下一个迭代,即:只希望包含发送列=“是”所在的行

提前感谢您的帮助

函数sendmail(){ //设置功能 var ActiveSheet=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var StartRow=2; var RowRange=ActiveSheet.getLastRow()-StartRow+1; var WholeRange=ActiveSheet.getRange(StartRow,1,RowRange,11); var AllValues=WholeRange.getValues(); var message=“”; //迭代循环 对于(所有值中的i){ //设置当前行 var CurrentRow=所有值[i]; //定义要检查是否已发送的列 const EmailSent=CurrentRow[11]; //若已发送行,则继续下一次迭代 如果(EmailSent==“是”) 继续; //为信息设置HTML模板 信息+= 工作日期:“+CurrentRow[0]+”

”+ 客户:+CurrentRow[1]+“

”+ 项目编号:“+CurrentRow[2]+”

”+ “项目:+CurrentRow[3]+”

”+ 位置:“+CurrentRow[4]+”

”+ 站点联系人:“+CurrentRow[5]+”

”+ “起点:”+CurrentRow[6]+“

”+ “开始时间:”+CurrentRow[7]+“

”+ 卡车尺寸:“+CurrentRow[8]+”



”; //设置要查看的行 var setRow=parseInt(i)+StartRow; //标记一次发送的行 ActiveSheet.getRange(setRow,11).setValue(“是”); } //定义向谁发送电子邮件 变量SendTo=”scheduling@baqprojects.com" //设置主题行 var Subject=“#6测试-2-选定行”; //发送实际的电子邮件 MailApp.sendmail({ 收件人:SendTo, 抄送:“, 主题:主题,, htmlBody:message, }); }试试这个:

function sendEmail(){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var startRow=2;
  var rg=ss.getDataRange();
  var vA=rg.getValues();
  var message="";
  for(var i=1;i<vA.length;i++){
    message +="<p><b>Date of Works: </b>" + vA[i][0] + "</p>" + "<p><b>Customer: </b>" + vA[i][1] + "</p>" + "<p><b>Project No: </b>" + vA[i][2] + "</p>" + "<p><b>Project: </b>" + vA[i][3] + "</p>" + "<p><b>Location: </b>" + vA[i][4] + "</p>" + "<p><b>Site Contact: </b>" + vA[i][5] + "</p>" + "<p><b>Starting Point: </b>" + vA[i][6] + "</p>" + "<p><b>Start Time: </b>" + vA[i][7] + "</p>" + "<p><b>Truck Size: </b>" + vA[i][8] + "</p><br><br>";
    var SendTo="scheduling@baqprojects.com"
    var Subject="#6 Test - 2 - Selected Rows";
    if(vA[i][11]!='Yes'){
      MailApp.sendEmail({to: SendTo,cc: "",subject: Subject,htmlBody: message,});
      sh.getRange(i+1,12).setValue('Yes');
    }
  }
}
函数sendmail(){ var ss=SpreadsheetApp.getActive(); var sh=ss.getActiveSheet(); var startRow=2; var rg=ss.getDataRange(); var vA=rg.getValues(); var message=“”;
对于(var i=1;i我最终使用了不同的方法

在电子表格中,我有一个“控制单元”,它使用数据验证列出我要发送电子邮件的公司

在这种情况下,我运行一个查询,根据控制单元,仅将该公司的数据绘制到表中

下面的脚本循环浏览公司列表,更新控制单元并更改表,然后使用另一个函数将相关表分别发送给每个公司

希望这能帮助你们中的一些人

function bulkbookingsdraft() {

  // loop through table booking all listed companies

  var app = SpreadsheetApp;
  var sheet = app.getActiveSpreadsheet().getActiveSheet();
  var companies = sheet.getDataRange();
  var lastRow = companies.getLastRow();
  var searchRange = sheet.getRange(3,9, lastRow-1,9);
  var cmdbox = sheet.getRange(1, 5)

  // Get array of values in the searchRange - the list of companies
  var rangeValues = searchRange.getValues();

  // Loop through array and update control cell
    for (r = 1 ; r < lastRow - 1; r++){
     var company = sheet.getRange(r+2,9).getValue()        

      cmdbox.setValue(company);
      sendEmail_draft();     

   }
}
函数bulkbookingsdraft(){
//通过表格循环预订所有上市公司
var app=电子表格应用程序;
var sheet=app.getActiveSpreadsheet().getActiveSheet();
var companys=sheet.getDataRange();
var lastRow=companys.getLastRow();
var searchRange=sheet.getRange(3,9,lastRow-1,9);
var cmdbox=sheet.getRange(1,5)
//获取searchRange(公司列表)中的值数组
var rangeValues=searchRange.getValues();
//循环遍历数组并更新控制单元
对于(r=1;r
当emailsent==yes时会发生什么?如果CurrentRow 11=yes,则跳过当前行并移动到下一行。理想情况下,我希望筛选一个表,然后在电子邮件正文中仅将可见范围作为格式化表发送。当我无法使其工作时,这似乎是下一个最佳选择?