我想使用Google表单填充Google电子表格.其中一个字段是电子邮件地址,我需要根据我们组织的电子邮件列表对此进行验证 - 换句话说,强制用户使用有效和现有的电子邮件地址.
我们的组织使用Google Apps.该表单将由我们组织中的用户创建,并且只有来自我们组织/域的电子邮件地址才会被视为有效.
我正在研究一个与Google Form的响应表进行交互的脚本。
FormApp.getActiveForm().getDestinationId()
Run Code Online (Sandbox Code Playgroud)
给我电子表格ID,但我找不到获取工作表本身的方法。用户可以更改其名称和位置,因此我需要获取其ID,例如
Sheet.getSheetId()
Run Code Online (Sandbox Code Playgroud)
我还必须确定响应使用的列数。它不等于表格中的问题数量。我可以计算表格中的项目数:
Form.getItems().length
Run Code Online (Sandbox Code Playgroud)
然后搜索gridItems,在每行中添加行数,然后将它们减去一:
+ gridItem.getRows().length - 1
Run Code Online (Sandbox Code Playgroud)
最后,我认为没有办法将每个问题与工作表中的每一列相关联,而是通过某种方式将列名与项目标题进行比较。
谢谢
我正在使用Google Apps脚本发送电子邮件 - 我知道该怎么做.我想嵌入"是或否"回复链接或多项选择问题,并将收件人的回复记录在Google电子表格中.
我怎么做?
我有一个Google表单,该表单用于收集调查数据(对于这个问题,我将使用示例表单),该表单包含可以使用一组复选框选择的多个答案的问题。
当我从表单中获取数据并将其导入大熊猫时,我得到了:
Timestamp What sweets do you like?
0 23/11/2013 13:22:30 Chocolate, Toffee, Popcorn
1 23/11/2013 13:22:34 Chocolate
2 23/11/2013 13:22:39 Toffee, Popcorn, Fruit
3 23/11/2013 13:22:45 Fudge, Toffee
4 23/11/2013 13:22:48 Popcorn
Run Code Online (Sandbox Code Playgroud)
我想对问题的结果进行统计(有多少人喜欢Chocolate,有多少人喜欢Toffee等)。问题在于,所有答案都在同一列内,因此按该列分组并要求计数是行不通的。
Pandas中是否有一种简单的方法可以将这种数据帧转换成一个包含多个列的数据,分别称为Chocolate,Toffee,Popcorn,Fudge和Fruit,而每个列都是布尔值(1表示是,0表示否)?我想不出一个明智的方法来做到这一点,而且我不确定它是否真的有帮助(以这种方式进行我想做的汇总可能会更困难)。
我最近问了一个关于如何将项目从 Google 电子表格添加到 Google 表单的问题。而且效果很好。FormApp.create()但是,我必须使用而不是使用,.openByUrl()因为 ID 必须保持不变。问题是,如果我再次运行我的脚本,它会打开现有表单(很棒),然后将更多项目附加到现有表单中。
这种行为非常有道理,但并不是我想要的。所以我想在从电子表格中添加新项目之前,我只需删除所有现有项目。我咨询了 Google 开发网站的 Form Services,觉得我应该拥有所有的部分。不过,我不能把它们放在一起。
我现在正在执行以下操作:
var form = FormApp.openByUrl('https://docs.google.com/forms/d/.../edit');
var items = form.getItems();
for (var i in items) {
form.deleteItem(i);
}
Run Code Online (Sandbox Code Playgroud)
但是,这会给我一个超出范围的错误。有人可以指出我正确的方向吗?
我有一个与表单链接的Google电子表格,并且所有表单响应都存储在其中。我试图找到的是表单本身的ID。我试过了,但这行不通..
(我正在从表单所链接到的电子表格中的脚本编辑器中运行以下代码。)
function getID()
{
var form = FormApp.getActiveForm();
var formID = form.getId();
Logger.log(formID);
}
Run Code Online (Sandbox Code Playgroud)
由于脚本是容器绑定到电子表格本身的,因此返回NULL。还有什么其他方法可以获取链接表单的ID甚至链接表单的URL?
我可以通过从电子表格执行以下操作来手动获取它。表单>编辑表单这将显示URL。
如果我知道表单的名称,则可以使用DriveApp.getFilesByName()通过名称来获取它,然后对其进行迭代,然后使用File.getId(),但我不一定知道该名称。
有任何想法吗?
我有一个表单,可以将表单的数据输入到谷歌电子表格中。此数据按提交顺序列出。
当我清除电子表格的内容时,输入下一个数据,就好像其他数据存在一样,x 个数字或向下的行。
清除
这是我用来清除内容的脚本
function clear() {
var sheet = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1IEcXuEtkwVmnOEeQE71YQcZTrSkFa1OjlP8JpXGonHk/edit#gid=2015797647').getSheetByName('Form Responses 1');
var lastRow = sheet.getLastRow();
var lastCol = sheet.getLastColumn();
var range = sheet.getRange(2,2,lastRow,lastCol);
range.clearContent();
Run Code Online (Sandbox Code Playgroud)
我应该清除或选择要清除的数据有不同的方式吗?
或者有没有办法删除保留电子表格格式的行?
我想在表单提交时将 Google Sheet 导出为 CSV。我已经搜索过,但唯一类似的东西在转换后不会将其分成不同的列:使用脚本从 Google Drive Forms 导出电子表格或 CSV 文本文件?
这是一个只有 8 列的简单工作表。
任何帮助表示赞赏
为什么“ .getChoices() ”不适用于现有列表项?
我有以下代码,通过它的ID获取表单中的项,并且我打算更新表单项的值。但是,使用.getChoices()方法时,它将失败,并显示错误' TypeError:在对象Item中找不到函数getChoices。'
我获取该项目是一个列表项的要求,并在创建一个列表项,然后取出,它正常工作,如列出的示例代码在这里。
我的代码如下:
function getWeekNumberFormItem() {
var form = FormApp.getActiveForm();
var item = form.getItemById(12345);//redacted for privacy, but the ID in here is correct.
var title = item.getTitle();
var itemType = item.getType();
Logger.log('Item Type: ' + itemType);
Logger.log('Item Title: ' + title);
var choices = item.getChoices();
Logger.log(choices);
}
Run Code Online (Sandbox Code Playgroud)
并证明它是一个列表项,我的日志输出是:

我使用不正确吗?还是只能在Apps脚本创建项目时使用?相反,我将如何在此列表项中获得选择并使用新选项更新它们?我看到其他用户设法做到了这一点,所以我相信这是可能的。
我想在Google Form上写一个正则表达式
1到9之间的第一个字符第二个和第三个字母(大写),后三个字符应为541或001之类的数字,但不能为000
这个表达式也取000
[1-9][A-Z]{2}[0-9]{3}
Run Code Online (Sandbox Code Playgroud)