我正在尝试使用javascript调用来更新一个单元格中的值,这是基于我发现包含特定值的单元格的偏移量。
例如,我想遍历列A
,直到找到“bar”,然后将该行中B
列的值设置为1
:
我知道如何首先阅读这些值:
gapi.client.sheets.spreadsheets.values.get({
spreadsheetId: SPREADSHEET_ID,
range: 'Sheet1!A1:A3',
}).then(function(response) {
var range = response.result;
for (i = 0; i < range.values.length; i++) {
if (range.values[i] == "bar") {
// Update column B in this row to 1
}
我知道我需要某种spreadsheets.values.update
:
gapi.client.sheets.spreadsheets.values.update({
spreadsheetId: SPREADSHEET_ID,
range: the range found above, offset by one column,
valueInputOption: 'RAW',
values: [ [ value ] ]
});
但是如何从上面代码中找到的范围中获取地址偏移?
答案 0 :(得分:0)
有一种简单但看似相当愚蠢的方法可以做到这一点,更新整个范围,而不仅仅是已更改的子集。
var address = 'Sheet1!A1:A3';
var range;
gapi.client.sheets.spreadsheets.values.get(
{
spreadsheetId: SPREADSHEET_ID,
range: address,
}
).then(function(response) {
range = response.result; // available globally
for (i = 0; i < range.values.length; i++) {
if (range.values[i][0] == "bar") {
range.values[i][1] = 1;
}
}
).then(function() {
gapi.client.sheets.spreadsheets.values.update({
// Update entire range back into spreadsheet.
spreadsheetId: SPREADSHEET_ID,
range: address,
valueInputOption: 'RAW',
values: range.values
}).then(function(response) {
// Having a then clause seems to be necessary for the
// update to happen. Not sure why.
console.log(response);
});
但这对我来说似乎有点弱。如果范围很大,你只想更新改变的内容怎么办?也许有人可以改善这一点。