更新行时公式会丢失

时间:2014-03-18 13:38:34

标签: java google-app-engine google-spreadsheet-api

我在Java中使用Google SpreadSheet API来阅读和更新电子表格。假设我有几个名为A和B的列。

A包含公式。

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()方法有关,但看起来我读的每一行都丢失了公式,而不仅仅是我执行更新的那一行。为了保存配方,我该怎么办?我甚至没有阅读/编辑那个单元格...谢谢。

编辑:如documentation中所示,基于列表的Feed不处理公式,但事实是,我不是在阅读和/或修改包含公式的单元格...

1 个答案:

答案 0 :(得分:1)

您可以先尝试将公式保存在数组中,然后将其分配回工作表。

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