如何将 Google 表单的复选框网格响应输出到 Google 工作表作为单独的列(加上计算时区)?

How to output Tick Box Grid Responses from Google Forms to Google Sheets as Separate Columns (plus calculates Timezone)?

我需要一些东西,让我们的团队成员可以 select 他们在一周内的正常可用时间,以 1 小时为间隔,并且所有团队成员的结果都可以在电子表格中看到(如果他们填写它输出 2 次或更多次,它只会更新他们的最后一个响应)。从那里开始,select特定成员可以开会的会议时间应该很多更简单!

我最近想到 Google FormsGoogle Sheets 可以成为这里最好的解决方案之一!但是我真的没有太多 Google Apps Script 的经验(看起来我需要做我想做的事),所以我有一些问题:

  1. 我有一个7 x 24 (7 Days of the Week by 24 1-Hour Intervals) Tick Box Grid (see linked image here). How can I set it up so it can output each Row+Column in its own separate Column in the output Google Sheet (see linked image here for my preferred output for a single Day)?

    • 如果您想知道第 3 行发生了什么:我有 SUM 函数 =iferror(counta(L4:L62))(其中 L 是列的字母)来计算每列中的“已检查的响应”轻松浏览每个小时块列的 Xs (Yes) 的数量。
  2. 如何自定义每个行+列检查响应,使其输出为一个简单的字母 X?

  3. 我还有一个 Dropdown 时区问题,它询问用户 select 他们的时区来自世界上 25 个可用时区之一.我希望他们对可用时间 Tick Box Grid 的回复进行修改以匹配他们在 GMT 中的回复。因此,例如,如果我 select 我的时区为 GMT -4,并且在 复选框网格 我 select 12AM to 1AMSunday,Google Sheet 将在 Saturday?

    上的 7PM to 8PM 下包含一个 X

我是不是对 Google 表格 + Google Sheets API 要求太多了?如果我是,也许我可以使用更好的云程序来处理这个问题?

所以@MattKing (Matthew King) 昨天与我密切合作,让我的 Tick Box Grid 按我的预期输出到 Google Sheets,以及处理 Timezone Conersion!您可以在此处查看测试结果: https://docs.google.com/spreadsheets/d/1g5S5Nyfwr8eHWyn-UXVfdbVj8tdZeY-lU20C2VxuCZ8/edit

我应该首先提到表单输出 Sheet(称为 表单响应)不应被修改。也不需要 Google API 脚本来获取 Google Sheets 以按照我的意愿格式化表单结果。相反,带有公式的新 Sheet 是正确的选择(我可能会添加相当复杂的公式)!

  • 输出 7 天 24 小时的 1 小时增量:=ARRAYFORMULA(SEQUENCE(1,24*7,0)/24+1)
  • 可以输出“Form Responses”(A列)中的每个Name,按字母顺序排列,如下:=QUERY({'Form responses'!B2:C},"select Col1 where Col2 is not null order by Col1")
  • “Form Responses”(E 到 AB 列)中的可用时间 可以输出(其中每列是 7 天中的 1 天中的 24 小时中的 1 小时),如下所示: =IF($A4="",,IF(ISNUMBER(MATCH($A4&TEXT(B,"ddd hh"),UTCData!$A:$A,0)),"X",))
  • 如果我想在单独的 Sheet 中有单独的会议,并且我在 A1 中有会议名称(在表单中选择为复选框),那么我可以设置它,所以只有会议的名称勾选会议的人将分享如下:=QUERY({'Form responses'!B2:C},"select Col1 where Col2 Contains'"&A1&"' order by Col1")

他还为我创建了 2 个处理更多公式转换的 Sheets:

  • 扁平化形式 Sheet
    • 扁平化公式: =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))
  • UTCData Sheet
    • 名称&UTCDayTimeCombos: =ARRAYFORMULA(QUERY(FLATTEN(IF('Flattened Form'!H2:N="",,'Flattened Form'!A2:A&TEXT('Flattened Form'!H2:N,"ddd hh"))),"where Col1<>''"))
    • 在列 C2 - C8 中,列出了 SundaySaturday

如果您需要有人帮助您处理 Google Sheet 和表格,我非常推荐 Matt 的帮助!