【发布时间】:2016-06-26 20:05:21
【问题描述】:
是否可以通过 GAS 以编程方式应用“自动”数字格式?我的问题是,当我写数字列时,表格似乎试图应用适当的格式,但有时会出错。也就是说,特定的小整数(有时为 1)将被格式化为日期。该范围是用一个myRange.setValues() 方法编写的,我看不到任何错误模式,因此看不到任何防止意外格式错误的方法。
但是,当我选择表格中的范围并单击数字格式菜单上的“自动”时,一切都会恢复正常。由于数据的写入会以某种方式重置格式,因此提前单击它并没有帮助。
尽管介绍冗长,但我的问题很简单:如何以编程方式应用“自动”数字格式。我认为这是非常基本的,特别是因为谷歌和这里的搜索没有帮助。
我当前的后备解决方案是使用myRange.setNumberFormat("0") 作为整个范围的格式。这并不理想,因为有些数字非常大并且更容易以科学计数法阅读。该范围内还有一些文本字符串,但无论应用何种格式,这些格式都是正确的。当只需在用户界面中单击几下时,我还希望避免遍历数据并测试值以确定最佳格式。
【问题讨论】:
-
这是一个非常好的问题,而且肯定没有记录在案。我能找到的最接近的是stackoverflow.com/questions/13758913/…,它只覆盖纯文本。
-
非常感谢您的评论。我搜索并搜索了将近一个星期,以为我一定遗漏了一些明显的东西。我留下的唯一怀疑是“自动”格式是任何数字格式的缺席,但我分配
null或undefined的努力完全没有成功。myRange.setNumberFormat((typeof undefined)); // or just 'undefined'将带有0的单元格转换为:'un301899fin189930' - 也就是说,它将undefined解析为字符串,然后勇敢地 尝试将单元格格式化为日期。(? ) 传递null会引发服务器错误。 -
如果其他人想知道
myRange.setNumberFormat("");不起作用。它只是隐藏了所有数字(和日期)。字符串仍然正常显示。就像您将""放入用户界面的自定义数字格式框中一样。
标签: google-apps-script google-sheets