У меня простой код, где в 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). Так что в случае появления нового A1 - 05.05.1900. Когда я нажимаю "Формат"> "Номер"> "Номер", он показывает 6. Поэтому число верно, но форматирование неверно.
Как мне решить эту проблему? Готовьте, что у реального файла есть сотни строк дат, я использую циклы для назначения формул.
Вы можете установить формат номера ячейки одновременно с настройкой содержимого или формулы. Поэтому в случае
ss.getRange(1,1).setFormula('=MONTH(D1);
это может стать
ss.getRange(1,1).setFormula('=MONTH(D1)').setNumberFormat("0")
Возможные форматы, которые вы можете использовать с .setNumberFormat(numberFormat)
являются такими же, как вы можете использовать в самих листах.
В дополнение к решению предпочтительный метод из 3-х ячеек, которые устанавливаются здесь (и в связи с вашим другим вопросом), вместо того, чтобы устанавливать эти формулы по одному, вы можете установить все три с одним вызовом.
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"]);