如何获得Google表格以将我提交的表单字符串视为纯文本并保留前导零?


8

我有Google表单,用户可以在其中输入信息,其中一些包含前导零(例如,邮政编码,ID号)。

但是,将这些数据保存到Google表格后,它不会将其视为纯文本,而是会删除零。表单字段是未经验证的文本字段。

我试图将包含这些值的单元格范围设置为纯文本格式,但是除非工作表中没有文本,否则工作表似乎不会将格式设置为纯文本格式。因此,我可以将一栏格式设置为纯文本格式,提交表格,并且前导零将仍然被删除。

我尝试编写一个应用程序脚本来解决此问题,但是我没有很好的方法将其部署到需要它的用户。

我如何解决这个问题而不必指示用户在其表单项前加单引号?这是一件很小的事情,但是对于似乎必须解决的常见问题,我找不到很好的简单解决方案。如果无法执行此操作,则可能必须完全删除Google表单/表格。


1
欢迎使用Web应用程序!好问题,我对其进行了稍微的编辑,以使其更易于阅读。您是否看到过如何让Google文档停止将表单回复的格式设置为日期?
Vidar S. Ramdal 2014年

1
是的,并且如上所述,我已经尝试了“可接受的答案”的建议,但这是针对较旧版本的工作表的,不再起作用。
res

Answers:


3

我的部分答案是:这是一个已知的错误(新收到的表单提交不像其旧版工作表那样尊重其所进入的列的格式)。

根据您随后对数据的处理方式,另一种选择是使用正确的格式在另一张纸上复制表单提交的内容。例如,如果列E包含的邮政编码应为5位数字,并包含前导零(如果需要),则可以使用:

=ArrayFormula(TEXT('Form Responses'!E:E,"00000"))

在另一张纸上。

但是,您还需要带入所有其他列。不必太复杂,可以在新版本的表格中轻松实现此目标,并根据需要设置列的格式,例如:

=QUERY('Form Responses'!A:G,"select * format E '00000'",1)


2

我刚刚遇到了这个问题,但是不幸的是我不知道我期望的位数,所以我不知道可能会丢失多少个零。幸运的是,在发送表单之前,我已经想到了这一点,如果您已经有答复,那么这将无济于事(除非您再次发送出去)。

为了解决这个问题,我有:

  1. 将问题类型设置为“文本”
  2. 在“高级设置”下,我选择了“正则表达式”
  3. 在下一个下拉框中,我选择了“匹配”
  4. 在文本框中输入 ^\[\d+\]$

此正则表达式迫使用户在响应开始时输入方括号,然后必须在其后至少输入一个数字,并且必须以方括号结尾。例如,[0021314]将是有效条目。请注意,这仅允许数字,如果您只想强制使用方括号,则可以^\[.+\]$改用。

在工作表中,这将显示为[0021314],因此您将需要删除方括号,这可以通过公式来完成,=mid(A1,2,len(A1)-2)其中A1是包含[0021314]的单元格。自动填充并将单元格设置为纯文本格式将完成您所需的其余工作。

您还可以更改正则表达式,以强制用户在其输入的开头输入单引号


0

长篇大论的说法“我不知道如何”再加上“似乎不可能”(但真可惜):

我能管理的最好的(但微弱的)方法是期望输入(并同时输出)一位数字,每位数字的范围为0到9。


0

此处和其他线程上提出的解决方案仅适用于位数固定的数字。上面的邮政编码类似于5。

我必须保持比利时电话号码的前导零。
比利时固定电话的结构为025382172(9位数字),
而移动电话的结构为0475123456(10位数字)

我以为我找到了一种解决方法,可以在新标签页中复制数据。为此,我使用两个单独的数组来批量加载列组。

第一阵列复制所有列,直到电话号码列G(不包括在内)。 =ARRAYFORMULA('Form Responses'!A2:F302)
第二个数组将复制电话号码列G之后的所有列,直到最后一个列。=ARRAYFORMULA('Form Responses'!H2:P302)

在电话号码栏中,我有一个简单的公式,可以在复制的值之前附加一个零: =("0"&'Form Responses'!G2)

...不幸的是,它仅在静态模式下有效。
在动态模式下,当Google表单中出现新行时,即使不认为数组会影响此列,电话号码列G中的公式也会被弄乱。

实际上,公式=("0"&'Form Responses'!G2)会移至下一行为空的行,=("0"&'Form Responses'!G3)而使单元格的令人沮丧的值为0。

将通过返回一个块中所有列的单个数组,在数组区域之外的右侧添加重复的电话号码列并只需输入以下公式来进行我的调查:=("0"&G3)...好奇是否可行...如果确实如此,我将屏蔽“本地”电话号码列,仅显示已处理的电话号码(不幸的是,不在页面上的正确位置)。


前提是所转换的电话号码列未在两个数组之间压缩,但上述解决方案仍在工作。它必须在自动添加数据的区域之外。在右边或左边。欢呼!Amicalement de Belgique。皮埃尔
皮埃尔·贝夸特

0

这是一篇较旧的文章,但我建议以下内容...

在结果标签中,A1:

=QUERY('Form Responses'!A:F)

在G1中:

=ArrayFormula(IF(ROW('Form Responses'!G:G)=1, 'Form Responses'!G1, IF('Form Responses'!G:G="", "", "0"&'Form Responses'!G:G)))

在H1中:

=QUERY('Form Responses'!H:P)

可以添加类似的方法来修改需要修改的任何列数据。


0

我以这种方式解决了以“ 0”开头的邮政编码问题...高亮显示列,转到“格式”选项卡,单击“数字”,“更多格式”,然后单击“自定义数字格式”,因为我的邮政编码只有5我输入“ 00000”并点击应用的数字。而且有效!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.