![](/img/trans.png)
[英]How to use getByDataFilter Sheets API v4 to get specific row data
[英]How can I use the Google Sheets (v4) API to modify a specific row of data dependent on a specific cell?
我想找到一种使用 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
如果我的理解是正确的,这个答案怎么样?
不幸的是,在当前阶段,Spreadsheet 的值无法使用查询语言更新。 您可以在此处查看查询语言的文档。 TheMaster的评论已经提到了这一点。
所以我想提出两种解决方法。
在这个解决方法中,我想建议使用 Sheets API。 根据您的最新问题,我可以确认您已经能够使用 Sheets API 放置和获取值。 那么下面的流程呢?
在这个解决方法中,我想建议使用由 Google Apps Script 创建的 Web Apps。 电子表格的值通过使用 Web 应用程序(如 API)进行修改。
作为示例情况,我使用 Web Apps 实现了以下查询。
UPDATE SET Collected = 'Yes' WHERE ID = 1
您共享的电子表格用作示例电子表格。 在这种情况下,对于“Sheet1”的工作表,当“A”列(ID)的值为1
,将“L”(Collected)列的值修改为Yes
。
请打开您要使用的电子表格的脚本编辑器。 并将以下脚本复制并粘贴到脚本编辑器中。
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 应用程序。
Only myself
,则只有您可以访问 Web Apps。 届时,请使用您的访问令牌。https://script.google.com/macros/s/#####/exec
。请使用以下 curl 示例向 Web 应用程序请求。 届时,请使用复制的 Web Apps 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”(Collected)列的值修改为Yes
。
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.