Google Script - Insert Column继承格式

时间:2017-06-13 09:02:31

标签: javascript google-apps-script google-sheets

我是一个简单的代码,在A1中有一个日期,例如 06/06/2017

我尝试做的是添加三列并在其中设置公式。 我使用以下方法添加列:

ss.insertColumns(1,3);

然后我在三列中设置公式:

ss.getRange(1,1).setFormula('=MONTH(D1);
ss.getRange(1,2).setFormula('=WEEKNUM(D1);
ss.getRange(1,3).setFormula('=CHOOSE( weekday(D1), "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")');

然而,最终发生的事情是,所有新列最终都会从之前继承A列的格式(或者至少基于我对Google Script的非常有限的理解,我的想法)。因此,如果新的A1显示 05/01/1900 。当我点击格式>数字>数字时,它最终会显示 6 。所以数字是正确的,但格式错误。

我该如何处理这个问题?请记住,真实文件有数百行日期,我使用循环来分配公式。

1 个答案:

答案 0 :(得分:1)

您可以在设置内容或公式的同时set the number format一个单元格。所以在

的情况下
ss.getRange(1,1).setFormula('=MONTH(D1);

这可以成为

ss.getRange(1,1).setFormula('=MONTH(D1)').setNumberFormat("0")

您可以与.setNumberFormat(numberFormat)一起使用的possible formats与您在Sheets中使用的相同。

除了解决方案之外,这里设置3个单元格的优选方法(与your other question相关联)而不是一次设置这些公式,您可以通过一次调用设置所有三个。

ss.getRange(1,1,1,3)
.setFormulas([
    '=MONTH(D1)',
    '=WEEKNUM(D1)',
    '=CHOOSE( weekday(D1), "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")'])
.setNumberFormats(["0","0","text"]);