【问题标题】:Update Sheets cell based on offset根据偏移量更新表格单元格
【发布时间】:2017-01-13 12:39:14
【问题描述】:

我正在尝试使用 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 ] ]
});

但是我怎样才能从上面代码中找到的范围中获取地址偏移量呢?

【问题讨论】:

  • this answer 关于将行/列转换为 A1 参考样式看起来是一个有希望的开始。

标签: javascript google-sheets google-docs-api google-sheets-api


【解决方案1】:

有一种简单但看似相当愚蠢的方法来执行此操作,更新整个范围,而不仅仅是已更改的子集。

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);
    });

但这对我来说似乎有点弱。如果范围很大,而您只想更新已更改的内容怎么办?也许有人可以改进这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多