Формулы теряются при обновлении строки

1

Я использую 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: Как указано в документации, фида на основе списка не обрабатывает формулы, но дело в том, что я не читаю и/или не модифицирую ячейку, содержащую формулу...

Теги:
google-app-engine
google-spreadsheet-api

1 ответ

1
Лучший ответ

Сначала вы можете попытаться сохранить формулу в массиве, а затем перевести ее обратно на лист.

function myFunction() {
  sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
  range = 'A1:A5';
  myFormulas = sheet.getRange(range).getFormulas();
  sheet.getRange(range).setFormulas(myFormulas);
 }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню