Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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 Docs - Fatal编程技术网

Javascript 谷歌表单从电子表格中提取数据,并通过电子邮件发送给用户

Javascript 谷歌表单从电子表格中提取数据,并通过电子邮件发送给用户,javascript,google-apps-script,google-docs,Javascript,Google Apps Script,Google Docs,我有一个电子表格,包含每个工作人员的所有年假余额。我有一份工作人员将填写的表格,我希望它能够从电子表格中提取他们的数据,并向他们发送一封包含结果的电子邮件 我在表单数据与电子表格数据的匹配以及提取相关单元格方面遇到问题。代码如下: function SendGoogleForm(e) { try { var subject = "Leave Balance Request"; var s = SpreadsheetApp.openByUrl("url")

我有一个电子表格,包含每个工作人员的所有年假余额。我有一份工作人员将填写的表格,我希望它能够从电子表格中提取他们的数据,并向他们发送一封包含结果的电子邮件

我在表单数据与电子表格数据的匹配以及提取相关单元格方面遇到问题。代码如下:

function SendGoogleForm(e) {  
  try {      

    var subject = "Leave Balance Request";  
    var s = SpreadsheetApp.openByUrl("url").getSheetByName("Check Leave");

    var email = e.namedValues["BCA National email address"];
    var sheet =  SpreadsheetApp.openByUrl("url").getSheetByName("Leave Summary");
    var cell = sheet.getRange("F3:F3");
    var getcell = cell.getCell(1,1);
    var pdate = getcell.setValue(e.namedValues['END date of leave requested']);
    var annualvalue = sheet.getRange("H6:H").getValues();
    var emaildata = sheet.getRange("A6:A").getValues();
    var username = e.namedValues["Username"];

    var message = "Your" + " " + e.namedValues["Type of leave requested"] + " " + "balance        is below" + "\n\n";   

    if (username == emaildata)  { message += "Annual Leave" + " : " +    annualvalue               + "\n\n"; }

    MailApp.sendEmail(email, subject, message);

  } 

  catch (e) {
    Logger.log(e.toString());
  }
}
我试过这个:

但无法让它工作

如有任何建议,将不胜感激

当您编写var emaildata=sheet.getRangeA6:A.getValues;,您将获得一个包含字符串的数组。您需要在for循环中迭代以测试每个值

类似的方法应该会奏效:

var message = "Your" + " " + e.namedValues["Type of leave requested"] + " " + "balance        is below" + "\n\n";   
for(var n in emaildata){
  if (username == emaildata[n][0])  { message += "Annual Leave" + " : " +    annualvalue               + "\n\n"; }
}
MailApp.sendEmail(email, subject, message);

}

Hmm我在日志中找到了这个[14-08-11 09:29:37:152 EST]表。getRange[A6:A][0.031秒][14-08-11 09:29:37:276 EST]Range.getValues[0.123秒][14-08-11 09:29:37:483 EST]MailApp.sendmail[daniel@bcanational.com,请假余额请求,您的事假余额低于年假:140.59041009589041106.1204109589041185.980410095890412,33.1304109589…继续…我想指出匹配名称所在的行,然后提供假期余额…我被难住了!