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

Add custom Data to Google Sheet once Form is filled

我正在使用接收用户申请的 Goofle 表单,提交表单后我正在使用 Google 表单提交触发器进行通知。它有一些问题,例如 (facebook profile link)

但是在发送通知时我不希望那些 links 以与用户输入相同的方式出现,而是像 Facebook, twitter(文本为 hyperlinked .) 应该出现

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

例如:

单元格 A2 有用户使用表单提交了 Facebook 个人资料link。

我希望 B2 列自动生成为 =hyperlink(A2, "Facebook")

每当用户提交表单时,A3 到 B3 都会发生同样的事情。

好的,经过一些挖掘和测试,我相信我为您找到了解决方案,因为您使用 "Yet Another Mail Merge"(又名 YAMM)add-on。开始了:

首先确保您的表单设置正确并link编辑为Google Sheet。创建所有问题后,将另一列添加到您的 sheet,并将其命名为 'Hyperlink' 或任何您喜欢的名称(记住它以备后用)。我们将在脚本编辑器中使用表单提交触发器以及一些代码。

代码如下:

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);
  }
}

然后设置触发器,保存后大概会请求授权:

接下来,保存脚本,然后通过您的表单提交测试,以查看 link 是否已正确创建,或者是否按需要创建。之后清除传播的行sheet(不是header)并删除表单本身的所有响应(不是必需的,但为了测试目的保持组织)。

现在,安装 YAMM add-on。然后它应该在 sheet 的末尾添加一个名为 'Merge satus' 的新列。在设置提交时的电子邮件通知之前,我们需要创建您的电子邮件模板。打开 GMAIL,创建一封包含所需字段和布局的电子邮件,并将其保存为草稿。这是我所做的示例:

我相信你很熟悉这个 add-on 的工作原理,所以我不需要在这里解释太多。

创建并保存草稿后,返回表格所附的 Google Sheet。转到 Add-ons > YAMM > 配置表单提交通知。我选择了 'Notify one or more addresses of all responses' 选项,它与草稿中预设的 'To:' 电子邮件相关联。 Select 从下拉列表中选择您的草稿,如果需要,请填写发件人姓名,并且(非常重要!!)选中 'Wait until a specific column is filled before sending the email' 复选框。确保 select Hyperlink 列(或您之前选择的任何名称)。这是我的设置供参考:

保存,测试,然后 ta-da。 hyperlinks 的这种简单格式已经解决! :D