表格填写后,将自定义数据添加到Google表格

时间:2016-04-20 19:32:31

标签: google-apps-script google-sheets google-spreadsheet-api google-form

我正在使用Goofle表单接收用户的应用程序,一旦提交表单,我就会使用Google表单提交触发器进行通知。它有一些问题,如(facebook个人资料链接)

但是在发送通知时,我并不希望这些链接的显示方式与用户输入的方式相同,而是应显示<{3}},Facebook(文本为超链接。) / p>

我已经了解onFormsubmit()函数,但不知道如何使用,请帮帮我。

例如:

Cell A2使用用户提交的Facebook个人资料链接。

我希望列B2自动生成为=超链接(A2,&#34; Facebook&#34;)

每当用户提交表单时,同样的事情应该发生在A3到B3之间。

1 个答案:

答案 0 :(得分:1)

好的经过一些挖掘和测试后,我相信我找到了一个解决方案,因为你使用了“Yet Another Mail Merge”(又名YAMM)附加组件。在这里:

首先确保您的表单设置正确并链接到Google表格。创建完所有问题后,在工作表中添加另一列,并将其命名为“超级链接”或任何您喜欢的内容(以后再记住它)。我们将在脚本编辑器中使用表单提交触发器以及一些代码。

以下是代码:

function onFormSubmit(e)
{
  var r = e.range;
  var v = e.namedValues;

  var link = v['Link'];

  // For testing purposes, this part was apart of my form, 
  // I'd assume you'd want to change it to something more 
  // usable in your case. Notice that I refer to the values 
  // by the name of the question they preside in.
  var friendlyName = v['Friendly Name'];

  var rngHyper = getCellRngByCol(r, 'Hyperlink');

  // See below for the meaning of the boolean
  addHyperlink(rngHyper, link, friendlyName, true);
}

// Will only return one cell no matter the range size.
// Perfect for onFormSubmit(e) use case.
function getCellRngByCol(rng, col)
{
  var aRng = SpreadsheetApp.getActiveSheet().getDataRange();
  var hRng = aRng.offset(0, 0, 1, aRng.getNumColumns()).getValues();
  var colIndex = hRng[0].indexOf(col);

  return SpreadsheetApp.getActiveSheet().getRange(rng.getRow(), colIndex + 1);
}

// Add some form of hyperlink reference to one particular
// cell, passed as a range object
function addHyperlink(rng, link, name, useFormula)
{
  if (useFormula)
  {
    // If useFormula is TRUE, use Google Sheet HYPERLINK formula,
    // only if you are sure all URL's are formated properly,
    // and include HTTPS/HTTP/WWW. Also looks more pleasing in Google Sheet.

    var formula = '=HYPERLINK("<<URL>>", "<<NAME>>")';
    formula = formula.replace('<<URL>>', link).replace('<<NAME>>', name);

    rng.setFormula(formula);
  }
  else
  {
    // Else use HTML <a> tag with hyperlink referencing, which should transform
    // any URL passed as a clickable hyperlink within email. Not very visually
    // appealing in Google Sheet.

    var value = '<a href="<<URL>>"><<NAME>></a>';
    value = value.replace('<<URL>>', link).replace('<<NAME>>', name);
    rng.setValue(value);
  }
}

然后设置触发器,保存后可能会要求授权:

On Submit Trigger

接下来,保存脚本,然后通过表单提交测试提交,以查看链接是否已正确创建,或根据需要创建。之后清除电子表格的行(而不是标题)并删除表单本身的所有响应(不是必需的,但为了测试目的而保持组织有用)。

现在,安装YAMM插件。然后它应该在工作表的末尾添加一个名为“Merge satus”的新列。在设置提交电子邮件通知之前,我们需要创建您的电子邮件模板。打开GMAIL,创建包含所需字段和布局的电子邮件,并将其另存为草稿。以下是我的例子:

Email Template

我确信你熟悉这个附加组件的工作方式,所以我不需要在这里解释太多。

创建并保存草稿后,请返回附加到表单的Google表格。转到加载项&gt; YAMM&gt;配置表单提交通知。我选择了“通知一个或多个所有响应的地址”选项,这些地址与草稿中预设的“收件人:”电子邮件相关联。从下拉列表中选择您的草稿,如果需要,填写发件人姓名,并且(非常重要!!)选中“等到特定列填满后再发送电子邮件”复选框。确保选择“超链接”列(或您之前为其命名的任何内容)。这是我的参考设置:

Notification Rules

保存,测试它和ta-da。这个超链接的简单格式已经解决! :d