Я использую API Google SpreadSheet в Java для чтения и обновления электронной таблицы. Скажем, у меня есть несколько столбцов с именами A и B.
А содержит формулу.
B - чистый текст.
Когда я цикл через SpreadSheet для обновления некоторых конкретных строк:
URL listFeedUrl = new URI(worksheet.getListFeedUrl().toString() + "?sq=somefield=" + URLEncoder.encode("\"" + somevalue+ "\"").toString()).toURL();
ListFeed listFeed = service.getFeed(listFeedUrl, ListFeed.class);
for (ListEntry row : listFeed.getEntries()) {
if (something.compareTo(somethingelse) == 0) {
row.getCustomElements().setValueLocal("B", request.getParameter("B"));
row.update();
}
}
Формула в столбце A теряется. Сохраняется только результат формулы. Я предполагаю, что это имеет какое-то отношение к методу update(), но похоже, что каждая строка, которую я читаю, теряет формулу, а не только ту, где я выполняю обновление. Что я могу сделать, чтобы сохранить формулу? Я даже не читаю/не редактирую эту ячейку... Спасибо.
EDIT: Как указано в документации, фида на основе списка не обрабатывает формулы, но дело в том, что я не читаю и/или не модифицирую ячейку, содержащую формулу...
Сначала вы можете попытаться сохранить формулу в массиве, а затем перевести ее обратно на лист.
function myFunction() {
sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
range = 'A1:A5';
myFormulas = sheet.getRange(range).getFormulas();
sheet.getRange(range).setFormulas(myFormulas);
}