Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.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
使用电子表格数据在电子邮件中填充HTML表格_Html_Email_Google Apps Script_Google Sheets - Fatal编程技术网

使用电子表格数据在电子邮件中填充HTML表格

使用电子表格数据在电子邮件中填充HTML表格,html,email,google-apps-script,google-sheets,Html,Email,Google Apps Script,Google Sheets,我有一个谷歌电子表格和一个数据表。填写表格后,我的脚本将获取数据并通过电子邮件发送。我有一些代码,可以从数据范围中获取我想要的每个值,并将其放入一个表中,但这一切都是通过识别100多个变量来完成的 是否有一种方法可以使用某种数组,以便用数据范围中的每一行数据填充html表 我坦承自己是一名编程新手,这可能是最糟糕的意大利面代码之一。非常感谢您的帮助(即使是javascript入门) //此脚本通过电子邮件将表单内容发送给给定的收件人 var sheet = SpreadsheetApp.getA

我有一个谷歌电子表格和一个数据表。填写表格后,我的脚本将获取数据并通过电子邮件发送。我有一些代码,可以从数据范围中获取我想要的每个值,并将其放入一个表中,但这一切都是通过识别100多个变量来完成的

是否有一种方法可以使用某种数组,以便用数据范围中的每一行数据填充html表

我坦承自己是一名编程新手,这可能是最糟糕的意大利面代码之一。非常感谢您的帮助(即使是javascript入门)

//此脚本通过电子邮件将表单内容发送给给定的收件人

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Report");
var recloc = sheet.getRange("D2"); //cell location of student email
var recipient = recloc.getValue(); //student's email address
var lastloc = sheet.getRange("B2");
var last = lastloc.getValue();  
var firstloc = sheet.getRange("A2");
var first = firstloc.getValue();
var courseloc = sheet.getRange("E2");
var course = courseloc.getValue();
var dateloc = sheet.getRange("C2");
var date = dateloc.getValue();
var gradeloc = sheet.getRange("D5");
var grade = gradeloc.getValue();
var totloc = sheet.getRange("D4");
var total = totloc.getValue();
var perloc = sheet.getRange("D6");
var percent = perloc.getValue();
var dataRange = sheet.getRange("A4:B9");
var data = dataRange.getValues();
// assignment cell locations
var assignloc1 = sheet.getRange("A5");
var assignloc2 = sheet.getRange("A6");
var assignloc3 = sheet.getRange("A7");
var assignloc4 = sheet.getRange("A8");
var assignloc5 = sheet.getRange("A9");
// assignment values
var assign1 = assignloc1.getValue();
var assign2 = assignloc2.getValue();
var assign3 = assignloc3.getValue();
var assign4 = assignloc4.getValue();
var assign5 = assignloc5.getValue();
// assignment score locations
var scoreloc1 = sheet.getRange("B5");
var scoreloc2 = sheet.getRange("B6");
var scoreloc3 = sheet.getRange("B7");
var scoreloc4 = sheet.getRange("B8");
var scoreloc5 = sheet.getRange("B9");
// assignment score values
var score1 = scoreloc1.getValue();
var score2 = scoreloc2.getValue();
var score3 = scoreloc3.getValue();
var score4 = scoreloc4.getValue();
var score5 = scoreloc5.getValue();

  // error message
var errmess = first+' '+last+', your Pin code did not match. Please double check your entry and re-submit. Contact your professor if you get this message again.';
var subject = course+' Grade Report';
var body = first+' '+last+', here is your grade report, requested on '+date+'. Grade '+grade+'/'+total+', '+percent+'%. Score breakdown: '+data;
var bodyHTML1 = '<p>'+first+' '+last+', here is your grade report.<br> Grade '+grade+'/'+total+', '+percent+'%.</p>';
// var bodyHTML2 = '<p>'+data+'</p>';
var bodyHTML2 = '<table> <tr> <td> '+assign1+' </td> <td> '+score1+' </td> </tr> <tr> <td> '+assign2+' </td> <td> '+score2+' </td> </tr> <tr> <td> '+assign3+' </td> <td> '+score3+' </td> </tr> <tr> <td> '+assign4+' </td> <td> '+score4+' </td> </tr> <tr> <td> '+assign5+' </td> <td> '+score5+' </td> </tr> </table>';

var bodyHTML3 = '<p>Sent by the <a href="http://www.steegle.com/">Steegle.com</a> Contact Us Form Google Apps Script</p>';
var advancedArgs = {htmlBody:bodyHTML1+bodyHTML2 ,};
var pinloc = sheet.getRange("G2");
var pin = pinloc.getValue();

if(pin == 1){       
MailApp.sendEmail(recipient, subject, body, advancedArgs);
}else{
MailApp.sendEmail(recipient, subject, errmess);
}
}
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“报告”);
var recloc=表中的getRange(“D2”)//学生电子邮件的手机位置
var recipient=recloc.getValue()//学生的电子邮件地址
var lastloc=表的getRange(“B2”);
var last=lastloc.getValue();
var firstloc=表。getRange(“A2”);
var first=firstloc.getValue();
var courseloc=sheet.getRange(“E2”);
var course=courseloc.getValue();
var dateloc=sheet.getRange(“C2”);
var date=dateloc.getValue();
var gradeloc=表的getRange(“D5”);
var grade=gradeloc.getValue();
var totloc=表的getRange(“D4”);
var total=totloc.getValue();
var perloc=表的getRange(“D6”);
变量百分比=perloc.getValue();
var dataRange=sheet.getRange(“A4:B9”);
var data=dataRange.getValues();
//分配单元位置
var assignloc1=表.getRange(“A5”);
var assignloc2=表.getRange(“A6”);
var assignloc3=表.getRange(“A7”);
var assignloc4=表.getRange(“A8”);
var assignloc5=表.getRange(“A9”);
//赋值
var assign1=assignloc1.getValue();
var assign2=assignloc2.getValue();
var assign3=assignloc3.getValue();
var assign4=assignloc4.getValue();
var assign5=assignloc5.getValue();
//作业分数位置
var scoreloc1=sheet.getRange(“B5”);
var scoreloc2=sheet.getRange(“B6”);
var scoreloc3=sheet.getRange(“B7”);
var scoreloc4=sheet.getRange(“B8”);
var scoreloc5=sheet.getRange(“B9”);
//作业分数值
var score1=scoreloc1.getValue();
var score2=scoreloc2.getValue();
var score3=scoreloc3.getValue();
var score4=scoreloc4.getValue();
var score5=scoreloc5.getValue();
//错误消息
var errmess=first+''+last+',您的Pin码不匹配。请仔细检查您的输入并重新提交。如果您再次收到此消息,请联系您的教授。“;
变量科目=课程+成绩报告;
var body=first+''+last+',这是您在'+date+'要求的成绩报告。年级“+年级+”/“+总数+”、“+百分比+”%。分数分解:'+数据;
var bodyHTML1=''+first+'+last+',这是你的成绩报告。
成绩'+grade+'/'+total+','+percent+'%。

'; //var bodyHTML2=''+data+'

'; var bodyHTML2=''+assign1+''+score1+''+assign2+''+assign3+''+score3+''+assign4+''+score4+''+assign5+''; var bodyHTML3=“由联系我们的谷歌应用程序脚本发送”

”; var-advancedags={htmlBody:bodyHTML1+bodyHTML2,}; var pinloc=表。getRange(“G2”); var pin=pinloc.getValue(); 如果(pin==1){ MailApp.sendEmail(收件人、主题、正文、优点); }否则{ MailApp.sendmail(收件人、主题、错误); } }
我冒昧地对您的代码以及生成表的循环进行了一些更改,如下所示:

函数报告2(){
var LOC={
收件人:[1,3],//D2
第一个:[1,0],//A2
last:[1,1],//B2
课程:[1,4],//E2
日期:[1,2],//C2
等级:[4,3],//D5
总计:[3,3],//D4
百分比:[5,3],//D6
};
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“报告”);
var values=sheet.getDataRange().getValues();//一次获取电子表格上的所有值
变量数据={};
for(var i in LOC)//行//列(所有从零开始的索引)
数据[i]=数值[LOC[i][0]][LOC[i][1]];
var errmess=data.first+''+data.last+',您的Pin码不匹配。请仔细检查您的输入并重新提交。如果您再次收到此消息,请与您的教授联系。“;
var主题=数据。课程+成绩报告;
var body=data.first+''+data.last+',这是您的成绩报告,在'+data.date+'.grade'+data.grade+'/'+data.total+','+data.percent+'%上请求。分数明细:'+data.data;
var bodyHTML1=''+data.first+'+data.last+',这是您的成绩报告。
成绩'+data.grade+'/'+data.total+','+data.percent+'%。

'; var bodyHTML2=''; 对于(变量i=4;i<9;++i) bodyHTML2+=''+值[i][0]+''+值[i][1]+''; bodyHTML2+=''; var-advancedags={htmlBody:bodyHTML1+bodyHTML2}; var pin=值[1][6];//G2 如果(引脚==1) MailApp.sendEmail(收件人、主题、正文、优点); 其他的 MailApp.sendmail(收件人、主题、错误); }

我开发了一个脚本,可以根据电子表格数据发送电子邮件,就像您正在尝试的那样。我想你会发现它很有用。它叫FormEmailer。您可以在脚本库(在“插入>脚本”菜单下)及其上找到它。

我冒昧地对代码以及生成表的循环进行了一些更改,如下所示:

函数报告2(){
var LOC={
收件人:[1,3],//D2
第一个:[1,0],//A2
last:[1,1],//B2
课程:[1,4],//E2
日期:[1,2],//C2
等级:[4,3],//D5
总计:[3,3],//D4
百分比:[5,3],//D6
};
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“报告”);
var values=sheet.getDataRange().getValues();//一次获取电子表格上的所有值
变量数据={};
for(var i in LOC)//行//列(所有从零开始的索引)
数据[i]=数值[LOC[i][0]][LOC[i][1]];
var errmess=data.first+''+data.last+',您的Pin码不匹配。请仔细检查您的输入
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Report");
var recloc = sheet.getRange("D2"); //cell location of student email
var recipient = recloc.getValue(); //student's email address
var lastloc = sheet.getRange("B2");
var last = lastloc.getValue();  
var firstloc = sheet.getRange("A2");
var first = firstloc.getValue();
var courseloc = sheet.getRange("E2");
var course = courseloc.getValue();
var dateloc = sheet.getRange("C2");
var date = dateloc.getValue();
var gradeloc = sheet.getRange("D5");
var grade = gradeloc.getValue();
var totloc = sheet.getRange("D4");
var total = totloc.getValue();
var perloc = sheet.getRange("D6");
var percent = perloc.getValue();
var dataRange = sheet.getRange("A4:B9");
var data = dataRange.getValues();
// assignment cell locations
var assignloc1 = sheet.getRange("A5");
var assignloc2 = sheet.getRange("A6");
var assignloc3 = sheet.getRange("A7");
var assignloc4 = sheet.getRange("A8");
var assignloc5 = sheet.getRange("A9");
// assignment values
var assign1 = assignloc1.getValue();
var assign2 = assignloc2.getValue();
var assign3 = assignloc3.getValue();
var assign4 = assignloc4.getValue();
var assign5 = assignloc5.getValue();
// assignment score locations
var scoreloc1 = sheet.getRange("B5");
var scoreloc2 = sheet.getRange("B6");
var scoreloc3 = sheet.getRange("B7");
var scoreloc4 = sheet.getRange("B8");
var scoreloc5 = sheet.getRange("B9");
// assignment score values
var score1 = scoreloc1.getValue();
var score2 = scoreloc2.getValue();
var score3 = scoreloc3.getValue();
var score4 = scoreloc4.getValue();
var score5 = scoreloc5.getValue();

  // error message
var errmess = first+' '+last+', your Pin code did not match. Please double check your entry and re-submit. Contact your professor if you get this message again.';
var subject = course+' Grade Report';
var body = first+' '+last+', here is your grade report, requested on '+date+'. Grade '+grade+'/'+total+', '+percent+'%. Score breakdown: '+data;
var bodyHTML1 = '<p>'+first+' '+last+', here is your grade report.<br> Grade '+grade+'/'+total+', '+percent+'%.</p>';
// var bodyHTML2 = '<p>'+data+'</p>';
var bodyHTML2 = '<table> <tr> <td> '+assign1+' </td> <td> '+score1+' </td> </tr> <tr> <td> '+assign2+' </td> <td> '+score2+' </td> </tr> <tr> <td> '+assign3+' </td> <td> '+score3+' </td> </tr> <tr> <td> '+assign4+' </td> <td> '+score4+' </td> </tr> <tr> <td> '+assign5+' </td> <td> '+score5+' </td> </tr> </table>';

var bodyHTML3 = '<p>Sent by the <a href="http://www.steegle.com/">Steegle.com</a> Contact Us Form Google Apps Script</p>';
var advancedArgs = {htmlBody:bodyHTML1+bodyHTML2 ,};
var pinloc = sheet.getRange("G2");
var pin = pinloc.getValue();

if(pin == 1){       
MailApp.sendEmail(recipient, subject, body, advancedArgs);
}else{
MailApp.sendEmail(recipient, subject, errmess);
}
}
function report2() {
  var LOC = {
    recipient: [1,3],//D2
    first: [1,0],    //A2
    last: [1,1],     //B2
    course: [1,4],   //E2
    date: [1,2],     //C2
    grade: [4,3],    //D5
    total: [3,3],    //D4
    percent: [5,3],  //D6
  };

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Report");
  var values = sheet.getDataRange().getValues(); //get all values on the spreadsheet at once
  var data = {};
  for( var i in LOC )  //row        //column   (all zero-based index)
    data[i] = values[ LOC[i][0] ][ LOC[i][1] ];

  var errmess = data.first+' '+data.last+', your Pin code did not match. Please double check your entry and re-submit. Contact your professor if you get this message again.';
  var subject = data.course+' Grade Report';
  var body = data.first+' '+data.last+', here is your grade report, requested on '+data.date+'. Grade '+data.grade+'/'+data.total+', '+data.percent+'%. Score breakdown: '+data.data;
  var bodyHTML1 = '<p>'+data.first+' '+data.last+', here is your grade report.<br> Grade '+data.grade+'/'+data.total+', '+data.percent+'%.</p>';

  var bodyHTML2 = '<table>';
  for( var i = 4; i < 9; ++i )
    bodyHTML2 += '<tr><td> '+values[i][0]+' </td><td> '+values[i][1]+' </td></tr>';
  bodyHTML2 += '</table>';

  var advancedArgs = {htmlBody: bodyHTML1+bodyHTML2};
  var pin = values[1][6]; //G2 
  if( pin == 1 )
    MailApp.sendEmail(recipient, subject, body, advancedArgs);
  else
    MailApp.sendEmail(recipient, subject, errmess);
}