Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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,供参考:这里是 这是一个与我的谷歌表单输出关联的表单(答案将输出到tab Form Responses 2) 我已经建立了一个能够收集大量数据的谷歌表单。它是由要求SAP为新员工授予权限的经理填写的 他们继续填写表格并进入主要部门(SAP流),这将引导他们进入下一页/部分,让经理检查员工所需的权限 有时,一名员工将与多个部门交互,因此第二页上存在支持/辅助SAP流的选项。这可以根据需要继续进行,直到员工的所有必要角色/权限都收集到Google工作表中 在工作表中,您将看到: A-F列包括基本

供参考:这里是

这是一个与我的谷歌表单输出关联的表单(答案将输出到tab Form Responses 2)


我已经建立了一个能够收集大量数据的谷歌表单。它是由要求SAP为新员工授予权限的经理填写的

他们继续填写表格并进入主要部门(SAP流),这将引导他们进入下一页/部分,让经理检查员工所需的权限

有时,一名员工将与多个部门交互,因此第二页上存在支持/辅助SAP流的选项。这可以根据需要继续进行,直到员工的所有必要角色/权限都收集到Google工作表中

在工作表中,您将看到:

  • A-F列包括基本信息
  • H-T列表示工作职责
  • U-AG列是支持SAP流的信息范围
  • AH-AT列是支持SAP流的工作职责
  • 列AU-BG收集辅助支持SAP流
我构建了谷歌脚本语言来收集变量中的这些信息,然后将这些信息声明为全局变量,这样它们就可以传递到应用程序脚本中的HTML页面

最后,将向负责指定SAP权限的经理发送包含此HTML页面的电子邮件

在以前的迭代中(这要简单得多),我使用IF语句检查行末尾的列是否为空

      // Loop over the rows
  data.forEach((row,i) => {

    // Identify whether notification has been sent
    if (row[59] === '') {
如果是,脚本将检查工作表,收集上述所有信息,并发送电子邮件。然后,它将用“通知已发送”填充最后一个单元格,以便下次提交表单并检查脚本时,它将跳过发送多余的电子邮件(并且我们将有一条记录,表明该过程已成功完成)

最新版本包含了以下变量:

        function jobResponsibilities(a){
      var z = a.range.getRow();
      var valuesA = a.range.getSheet().getRange(z,8,1,13).getValues();
      var jobResponsibilities = valuesA.join(' ');
      console.log(jobResponsibilities);
    }
      
    function supportingSAP(b){
      var y = b.range.getRow();
      var valuesB = b.range.getSheet().getRange(y,21,1,13).getValues();
      var supportingSAP = valuesB.join(' ');
    }
      
    function secondaryJob(c){
      var x = c.range.getRow();
      var valuesC = c.range.getSheet().getRange(x,34,1,13).getValues();
      var secondaryJob = valuesC.join(' ');
    }
      
    function secondarySAP(d){
      var w = d.range.getRow();
      var valuesD = d.range.getSheet().getRange(w,47,1,13).getValues();
      var secondarySAP = valuesD.join(' ');
    }
收集四种不同类型的信息。我使用了一个变量,以便找出表中包含这些信息的确切部分,并将它们连接在一起,以便以简单的表格格式将变量拉入电子邮件中

由于某些原因,在提交表单时,通知IF似乎没有运行,并且电子邮件从未发送。


这是我订购东西的方式有问题吗?我是否根据你给我看的内容不当地构建了函数?它是否像底部的括号一样简单?

如果您使用的是onFormSubmit,则提交的所有值都在e.NamedValue()和e.values()中。您不需要读取链接工作表中的行,信息已经提供给您。您的函数如何与表单提交触发器关联?您正确地推测我使用onFormSubmit作为触发器。你能详细说明一下e.namedValues()和e.values()中的值是什么意思吗?我希望调用什么样的代码才能以HTML页面中的格式调用这些单独的条目?