我想找到一种方法,可以根据我提供的条件使用Google API修改特定的数据行。类似于SQL的
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1
我曾尝试使用batchUpdateByDataFilter,但似乎无法使其正常工作。我刚刚意识到Google的查询语言,但这没有更新。
我下面有一个测试电子表格。我希望能够根据ID更新特定的列。
https://docs.google.com/spreadsheets/d/1keCaROqv4ytDaf5AhcMV13Jj3N_eZCpLfRAGt2ycwA8/edit?usp=sharing
例如在SQL中,如下所示
UPDATE SET Collected = 'Yes' WHERE ID = 1
谢谢
答案 0 :(得分:0)
如果我的理解正确,那么这个答案如何?
不幸的是,在当前阶段,不能使用查询语言更新电子表格的值。您可以在here上查看查询语言的文档。 TheMaster's comment已经提到了这一点。
所以我想提出2个解决方法。
在这种解决方法中,我想建议使用Sheets API。通过your latest question,我可以确认您已经能够使用Sheets API放置和获取值。那么下面的流程呢?
在这种解决方法中,我想建议使用由Google Apps脚本创建的Web Apps。通过使用Web应用程序(如API)来修改Spreadsheet的值。
作为示例情况,我使用Web Apps实现以下查询。
UPDATE SET Collected = 'Yes' WHERE ID = 1
您共享的电子表格用作示例电子表格。在这种情况下,对于工作表“ Sheet1”,当列“ A”(ID)的值为1
时,列“ L”(收集)的值将修改为Yes
。 / p>
请打开要使用的电子表格的脚本编辑器。并将以下脚本复制并粘贴到脚本编辑器中。
function doGet(e) {
var p = e.parameter;
var sheetName = "Sheet1";
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var range = sheet.getDataRange();
var values = range.getValues();
var headers = values.splice(0, 1)[0];
var checkCol = headers.indexOf(p.checkKey);
var modifyCol = headers.indexOf(p.modifyKey);
values.forEach(function(e, i) {
if (e[checkCol] == p.checkValue) {
values[i][modifyCol] = p.modifyValue;
}
});
values.unshift(headers);
range.setValues(values);
return ContentService.createTextOutput("Done");
}
请部署Web Apps。
Only myself
,则只有您可以访问Web Apps。那时,请使用您的访问令牌。https://script.google.com/macros/s/#####/exec
。请使用以下curl示例向Web Apps请求。当时,请使用复制的Web应用程序URL。每个值都设置为查询参数。
curl -L "https://script.google.com/macros/s/###/exec?checkKey=ID&checkValue=1&modifyKey=Collected&modifyValue=Yes"
或者,如果您想使用访问令牌,请在下面使用。
curl -L "https://script.google.com/macros/s/###/exec?checkKey=ID&checkValue=1&modifyKey=Collected&modifyValue=Yes&access_token=###"
通过curl命令上方的“ Sheet1”工作表,当“ A”列(ID)的值为1
时,“ L”列(收集)的值修改为{{1 }}。
如果我误解了你的问题,而这不是你想要的方向,我深表歉意。