我在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不处理公式,但事实是,我不是在阅读和/或修改包含公式的单元格...
答案 0 :(得分:1)
您可以先尝试将公式保存在数组中,然后将其分配回工作表。
function myFunction() {
sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
range = 'A1:A5';
myFormulas = sheet.getRange(range).getFormulas();
sheet.getRange(range).setFormulas(myFormulas);
}