forms - 如何将 Google 表单中的复选框网格响应作为单独的列输出到 Google 表格(加上计算时区)?
问题描述
我需要一些东西,我们的团队成员可以在一周内以 1 小时的间隔选择他们的常规可用时间,并且所有团队成员的结果都可以在电子表格中看到(如果他们填写 2 次或更多次,它将只需更新他们的最后回复)。从那里,选择特定成员可以开会的会议时间应该会简单得多!
我最近突然想到,谷歌表单和谷歌表格可能是这里最好的解决方案之一!但我对Google Apps Script真的没有太多经验(看起来我需要做我想做的事),所以我有一些问题:
我有一个7 x 24(一周中的 7 天,以 24 个 1 小时间隔)的复选框网格(请参见此处的链接图像)。我该如何设置它,以便它可以在输出 Google 表格中的自己单独的列中输出每一行 + 列(请参阅此处的链接图像以获取我一天的首选输出)?
- 如果您想知道第三行发生了什么:我有 SUM 函数
=iferror(counta(L4:L62))
(其中 L 是列的字母)来汇总每列中的“检查的响应”,以便轻松查看X的数量(是的)对于每个小时块列。
- 如果您想知道第三行发生了什么:我有 SUM 函数
如何自定义每个 Row+Column Checked Response 使其输出为简单的字母X?
我还有一个下拉时区问题,它要求用户从世界上 25 个可用时区中的 1 个中选择他们的时区。我希望他们对可用时间复选框网格的响应进行修改以匹配他们在 GMT 中的响应。因此,例如,如果我选择我的时区为
GMT -4
,并在我选择的复选框网格中,Google 表格将在on下包含一个X?12AM to 1AM
Sunday
7PM to 8PM
Saturday
我在这里对 Google Forms + Google Sheets API 要求太多了吗?如果我是,也许有更好的云程序可以用来处理这个问题?
解决方案
所以@MattKing(Matthew King)昨天与我密切合作,让我的勾选框网格按照我的意图输出到 Google 表格,以及处理时区转换!您可以在此处查看测试结果: https ://docs.google.com/spreadsheets/d/1g5S5Nyfwr8eHWyn-UXVfdbVj8tdZeY-lU20C2VxuCZ8/edit
我首先要提一下,不应修改表单输出表(称为表单响应)。也不需要谷歌 API 脚本来让谷歌表格按照我的意愿格式化表单结果。相反,带有公式的新表格(我可能会添加相当复杂的表格)是要走的路!
- 输出 1 小时增量 24 小时 7 天:
=ARRAYFORMULA(SEQUENCE(1,24*7,0)/24+1)
- 可以按字母顺序输出“表单响应”(在 A 列中)中的每个名称,如下所示:
=QUERY({'Form responses'!B2:C},"select Col1 where Col2 is not null order by Col1")
- 可以输出“表格回复”(在 E 到 AB 列中)中的可用时间(其中每列是 7 天中的 1 天中的 24 小时中的 1 小时),如下所示:
=IF($A4="",,IF(ISNUMBER(MATCH($A4&TEXT(B$2,"ddd hh"),UTCData!$A:$A,0)),"X",))
- 如果我想在单独的表格中进行单独的会议,并且我在 A1 中有会议名称(在表单中选择为复选框),那么我可以进行设置,以便只有检查该会议的人员的姓名将按如下方式共享:
=QUERY({'Form responses'!B2:C},"select Col1 where Col2 Contains'"&A1&"' order by Col1")
他还为我创建了 2 张处理更多公式转换的表格:
- 扁平表单
- 扁平化公式:
=ARRAYFORMULA(QUERY(SPLIT(FLATTEN('Form responses'!B2:B&"|"&'Form responses'!C2:C&"|"&'Form responses'!D2:D&"|"&MID('Form responses'!E1:AB1,64,20)&"|"&'Form responses'!E2:AB),"|",0,0),"where Col5<>''"))
- 提取时间:
=ARRAYFORMULA(IF(D2:D="",,SPLIT(MID(D2:D,2,LEN(D2:D)-2)," to ",0)))
- UTC 换算:
=ARRAYFORMULA(IFERROR(MOD(MATCH(SPLIT(E2:E,", ",0),TITLE!C10:I10,0),7)+F2:F+C2:C/24))
- 扁平化公式:
- UTC数据表
- 名称&UTCDayTimeCombos:
=ARRAYFORMULA(QUERY(FLATTEN(IF('Flattened Form'!H2:N="",,'Flattened Form'!A2:A&TEXT('Flattened Form'!H2:N,"ddd hh"))),"where Col1<>''"))
- 在C2 - C8列中,它列出
Sunday
了Saturday
- 名称&UTCDayTimeCombos:
如果您需要有人帮助您处理 Google 表格和表单,我不能再推荐 Matt 的帮助了!
推荐阅读
- c - 为什么 GCC -mcmodel=large 即使使用 -no-pie 标志而在没有 -fPIC 的情况下也会向函数调用添加偏移量?
- python - 使用 TensorFlow2 和 Tkinter 库运行 exe 时出现 PyInstaller 错误
- javascript - 如何在脚本中使用 delared 变量?
- php - 在查询 1 中使用查询 2 来获取一个查询中的所有数据
- amazon-web-services - AWS IAM - 如何使用 CLI 显示描述策略语句?
- python - 如何在 Python 中更高效地阅读?
- html - 为什么我的图像会离开 Firefox 以外的其他地方的容器?
- java - 使用扫描仪请求菜单输入时程序挂起
- java - Big O 表示法中算法的复杂性
- html - 通过 url 以角度添加图像的方法是什么?