是否可以从电子表格值发送带有触发器的谷歌表单?

时间:2013-06-30 02:28:15

标签: triggers google-apps-script google-sheets google-form

是否可以从电子表格值发送带有触发器的Google表单?如果是的话我会去哪里寻求帮助?

我创建了一个可在此处查看的Google表单http://www.leadersoftomorrowisn.org/Become_a_Member.html

我希望能够回答问题5“您对什么感兴趣?”的回答。并使用它们发送特定的谷歌表格。

是否可以从电子表格值发送带有触发器的Google表单?如果是的话我会在哪里寻求帮助?

最佳, 麦克斯韦

1 个答案:

答案 0 :(得分:1)

我们假设您的成为会员表单有一个接收回复的电子表格,并且您将创建一个带有Form Response触发器的脚本,该脚本会在回复时查看回复。我们称之为触发器onFormSubmit()。您可以选择创建表单脚本或电子表格脚本中包含的触发器功能 - 这些容器中的任何一个都可以接收表单响应。此选项将决定onFormSubmit()将收到哪个活动 - 有关详细信息,请参阅Understanding Events

您将为一系列兴趣创建(或已经拥有)一组额外的Google表单。这些表单中的每一个都有一个唯一的ID,这就是您将用于获取将发送给受访者的表单的URL的内容。有关API的详细信息,请参阅Class FormApp。对于每个兴趣表单,您需要将唯一ID嵌入到脚本中 - 当您在表单编辑器中或在实时表单上时,该ID将显示在URL中。

onFormSubmit中,您可以使用表单提交事件来读取当前响应的副本。您的问题5是checkBox个问题,因此所有选中的答案都将以逗号分隔的字符串形式发送。 (注意不要在你的问题中使用逗号!)在下面的例子中,我们split回答问题5以获得一系列兴趣,然后根据这些调查发送电子邮件链接到其他调查。它非常粗糙,与你的表格非常紧密地结合在一起,但它应该可以解决问题。

function onFormSubmit(event) {
  // Get the responses into convenient variables.
  var firstName = event.values[1];     // Question 1
  var lastName = event.values[2];      // Question 2
  var email = event.values[3];         // Question 3
  var allInterests = event.values[5]   // Question 5, a comma-separated list,
                          .split(','); //  which we turn into an array

  // Loop over all expressed interests, sending surveys
  for (var interest in allInterests) {
    sendInterestSurvey( firstName, lastName, email, allInterests[interest] );
  }
}

/**
 * Determine the id for a form that matches the given survey (interest),
 * and send an email to the respondent.
 */
function sendInterestSurvey( firstName, lastName, email, survey ) {
  var surveyFormId = null;  // Will fill with appropriate survey ID

  // Set serveyFormId according to current value of 'survey'.
  switch (survey) {
    case "Becoming an LOT Member of the USD Chapter":
      surveyFormId = '1234567890abcdefghijklmnopqrstuvwxyz';  // Replace with real form ID
      break;
    case "Presenting a business idea at one of USD's Business Opportunity Meetings (Spring 2014)":
      surveyFormId = '1234567890abcdefghijklmnopqrstuvwxyz';  // Replace with real form ID
      break;
    // and so on...
    default:
      // Error handling, or for "other"
      break;
  }

  // Send an email for any interest with a survey form
  if (surveyFormId != null) {

    var existingForm = FormApp.openById(surveyFormId);
    var surveyURL = existingForm.getPublishedUrl();
    var surveyTitle = existingForm.getTitle();

    // Build Email Body
    var body = 'Dear '+firstName+' '+lastName+',<br><br>';    // Dear John Doe,
    body += 'Thanks for completing our Member Contact Information.<br><br>';
    body += 'You expressed an interest in: ' + survey;
    body += ', and we would like to get more details about your interest.<br><br>';
    body += 'Please follow <a href="' +surveyURL+ '">this link</a> to complete the survey.<br><br>';
    body += 'Thank you!';

    MailApp.sendEmail({
     to: email,
     subject: surveyTitle,
     htmlBody: body
    });
  }
}

您可以更进一步,例如,您可以为其他调查的预填充版本生成一个URL,并且已填写受访者的姓名。