表单中的Google Apps脚本

时间:2013-08-20 18:17:09

标签: google-apps-script google-form

我正在为学生建立一个表格,我希望自动输入他们的电子邮件地址,我不确定如何做到这一点。我想出了以下内容,但我对此非常陌生,可能会离开。我不确定如何实现它,我得到一个空响应。我是否需要一个表示电子邮件的表单问题?如何以隐藏的方式记录用户的电子邮件?

function formEnterEmail(e) {
  var userEmail = Session.getActiveUser().getEmail();
  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRow = sheet.getLastRow();
  // Set the status of the new ticket to 'New'.
  // Column F is the Status column
  sheet.getRange(lastRow, getColIndexByName("Email")).setValue(userEmail);

function getColIndexByName(colName) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var numColumns = sheet.getLastColumn();
  var row = sheet.getRange(1, 1, 1, numColumns).getValues();
  for (i in row[0]) {
    var name = row[0][i];
    if (name == colName) {
      return parseInt(i) + 1;
    }
  }
  return -1;
}
}

2 个答案:

答案 0 :(得分:0)

如果您要构建一个表单,您将通过电子邮件发送给学生,那么当您设置表单时,您可以让它为您记录所有电子邮件地址,而无需编写任何脚本。

这是开始编写新表单的好方法...转到此页面: http://www.google.com/drive/apps.html?usp=ad_search

然后向下滚动到“表单”部分,然后单击“创建”。

这将引导您完成设置表单所需的所有内容,并将结果与​​学生的电子邮件地址一起放入电子表格中。您可以将生成的电子表格保密,这样您就是唯一可以查看所有响应的人。

我希望有所帮助。

答案 1 :(得分:0)

只有您使用的是Google Apps for Business或Google Apps for Education,才能在Google表单中收集用户的电子邮件地址,然后才能使用您域中的用户。如果您不符合这些要求,那么您唯一的选择是请求用户填写信息,或通过电子邮件将URL发送到预填表格。

这并非真正“隐藏”,因为实时表单会报告正在收集用户ID。

如果您是从脚本创建表单,则可以使用Form.setCollectEmail(true)控制电子邮件收集功能。但是,您也可以在不使用任何代码的情况下进行设置。

在表单编辑器中,查找“表单设置”。它们应该出现在所有问题之上。设置需要域登录和用户名收集的复选框。

screenshot

收集回复的电子表格会自动包含“用户名”列:

another screenshot