Javascript 使用由谷歌表单填充的谷歌表单为每个新回复发送电子邮件

Javascript 使用由谷歌表单填充的谷歌表单为每个新回复发送电子邮件,javascript,google-sheets,google-forms,Javascript,Google Sheets,Google Forms,看到了一些类似的选择,但没有什么很有帮助 我管理一个由几个团队组成的团队,他们在其中填写一份表格。它们填充了一个电子邮件列表,我希望有一个电子邮件列表(第2页)接收一封包含每个响应的所有响应的电子邮件 这封邮件看起来像是每个问题的粗体版本,下面是回复。电子邮件中的信息应与F栏中的回复相关。理想情况下,您的电子邮件标题为“ABC表-日期-提交人”或“F栏-E栏-C栏” 目前,我为每个团队准备了一份表格,目标是团队主管在团队提交回复时收到一封电子邮件(见D列)。如果不能做到这一点,我可以只做几个形式

看到了一些类似的选择,但没有什么很有帮助

我管理一个由几个团队组成的团队,他们在其中填写一份表格。它们填充了一个电子邮件列表,我希望有一个电子邮件列表(第2页)接收一封包含每个响应的所有响应的电子邮件

这封邮件看起来像是每个问题的粗体版本,下面是回复。电子邮件中的信息应与F栏中的回复相关。理想情况下,您的电子邮件标题为“ABC表-日期-提交人”或“F栏-E栏-C栏”

目前,我为每个团队准备了一份表格,目标是团队主管在团队提交回复时收到一封电子邮件(见D列)。如果不能做到这一点,我可以只做几个形式是独特的每个团队

*编辑:将为每个表单部分添加更多列,以获取更多问题

我在Google Sheets脚本编辑器的网上找到了这个,但我不知道javascript,但我相信我可以根据自己的需要调整它

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2; // Start at second row because the first row contains the data labels
  var numRows = 3; // Put in here the number of rows you want to process

  // Fetch the range of cells A2:B4
  // Column A = Email Address, Column B = First Name
  var dataRange = sheet.getRange(startRow, 1, numRows, 2)

  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (i in data) {
   var row = data[i];
   var emailAddress = row[0]; // First column of selected data
   var message = "Hey " + row[1] + ",\n how are you doing today?"; // Assemble the body text
   var subject = "Sending emails from a Spreadsheet";
   MailApp.sendEmail(emailAddress, subject, message);
  }
}

我的解决方案是从包含表单响应的工作表中创建一个HTML表,按团队对它们进行分组,并将它们发送给相应的主管

注册新响应时,此操作不会运行,只能手动运行。触发器不可能发送电子邮件。看

函数main(){
var sprsheet=SpreadsheetApp.getActiveSpreadsheet();
var supervisors=sprsheet.getSheetByName(“Sheet2”).getDataRange().getValues();//从工作表2中获取所有数据
var data=sprsheet.getSheetByName(“表单响应4”).getDataRange().getValues();//表单响应4也一样
对于(变量i=1;i<1.length;i++){
var计数器=0;
var表;
var header=“TimestampSubmiter EmailSubmitter TeamDate这是哪种形式?你走了吗?你说了吗?你爱我吗?你想挤我吗?”;
对于(var j=1;j0){
var subject=“从电子表格发送电子邮件”;
var message=“嘿”+主管[i][0]+”,\n你今天过得怎么样?
”; 表+=”; MailApp.sendmail({ 致:监事[i][1], 主题:主题,, htmlBody:message+table}); } } } 函数createTable(数据,表){ var单元格=[]; //该表是一个二维数组 对于(变量i=1;i
参考资料


我的解决方案是从包含表单响应的工作表中创建一个HTML表,将它们按团队分组并发送给相应的主管

注册新响应时,此操作不会运行,只能手动运行。触发器不可能发送电子邮件。看

函数main(){
var sprsheet=SpreadsheetApp.getActiveSpreadsheet();
var supervisors=sprsheet.getSheetByName(“Sheet2”).getDataRange().getValues();//从工作表2中获取所有数据
var data=sprsheet.getSheetByName(“表单响应4”).getDataRange().getValues();//表单响应4也一样
对于(变量i=1;i<1.length;i++){
var计数器=0;
var表;
var header=“TimestampSubmiter EmailSubmitter TeamDate这是哪种形式?你走了吗?你说了吗?你爱我吗?你想挤我吗?”;
对于(var j=1;j0){
var subject=“从电子表格发送电子邮件”;
var message=“嘿”+主管[i][0]+”,\n你今天过得怎么样?
”; 表+=”; MailApp.sendmail({ 致:监事[i][1], 主题:主题,, htmlBody:message+table}); } } } 函数createTable(数据,表){ var单元格=[]; //该表是一个二维数组 对于(变量i=1;i
参考资料


这是谷歌应用程序脚本。将其粘贴到工具->脚本编辑器中弹出的winodw中。它基本上是javascript,但与许多谷歌应用程序有接口。此外,脚本必须由您手动运行。我相信有一种方法可以触发脚本,使用一种叫做“触发器”的东西来执行某些特定的操作;这是我在网上找到的一个例子。我需要调整它来做我需要的事情,但是我不知道javascript:/我认为最简单的方法是,如果每个团队负责人都是各自表单的所有者。这样,他们可以在每次提交表单时收到一封电子邮件,并查看全局结果。所有这些都不需要编程。@Jescanellas好的,是的;然而,我需要电子邮件的内容包含的答复,而不是一个链接。此外,还有几个人需要接收每个响应。这是谷歌应用程序脚本。将其粘贴到工具->脚本编辑器中弹出的winodw中。它基本上是javascript,但与许多谷歌应用程序有接口。此外,脚本必须由您手动运行。我相信有一种方法可以触发脚本,使用一种叫做“触发器”的东西来执行某些特定的操作;这是我在网上找到的一个例子。我需要调整它来做具体的事情
function main(){

  var sprsheet = SpreadsheetApp.getActiveSpreadsheet();

  var supervisors = sprsheet.getSheetByName("Sheet2").getDataRange().getValues(); //Gets all the data from Sheet 2
  var data = sprsheet.getSheetByName("Form Responses 4").getDataRange().getValues(); //Same for Form Responses 4

  for (var i = 1; i < supervisors.length; i++){
    var counter = 0;
    var table;
    var header = "<table border=1><th>TimeStamp</th><th>Submitter email</th><th>Submitter</th><th>Team</th><th>Date</th><th>Which form is this?</th><th>Did you walk the walk?</th><th>Did you talk the talk?</th><th>Did you love me?</th><th>Do you want to squeez me?</th>";

    for (var j = 1; j < data.length; j++){ 

      if (supervisors[i][2] == data[j][3]){ //Teams are located at cols C and D respectively 
        table = createTable(data, header);
        counter++;
      }

    }
    if (counter > 0){
      var subject = "Sendimg emails from a Spreadsheet";
      var message = "<html><body>Hey " + supervisors[i][0] + ",\n how are you doing today? <br>";  
      table += "</table></body></html>";

      MailApp.sendEmail({
        to: supervisors[i][1], 
        subject: subject,
        htmlBody: message + table});  
    }
  }

}

function createTable(data, table){ 

  var cells = [];  
  //The table is a 2D array
  for (var i = 1; i < data.length; i++){
    cells = data[i]; //puts each cell in an array position
    table += "<tr>"; //Row starts

    for (var u = 0; u < cells.length; u++){
      table += "<td>"+ cells[u] +"</td>"; //New column
    }
    table += "</tr>"; //Row ends
  }
  return table
}