按列值搜索电子表格,返回行,然后将内容发布到外部API:JavaScript
我不熟悉javascript/google应用程序脚本,我正在努力找到完成任务的最佳脚本。我有一个google工作表,需要在其中检查某些列中的值,并根据匹配的情况返回要通过外部API发布的行数据。然后,理想情况下,项目的响应被设置回同一行的不同列 我不确定搜索特定列并不仅获取该值,还获取整行并将其传递给外部API的最有效方法 这就是我曾经尝试过但不幸失败的东西。有人能帮我设计密码,请在这里救我按列值搜索电子表格,返回行,然后将内容发布到外部API:JavaScript,javascript,arrays,json,api,google-sheets-api,Javascript,Arrays,Json,Api,Google Sheets Api,我不熟悉javascript/google应用程序脚本,我正在努力找到完成任务的最佳脚本。我有一个google工作表,需要在其中检查某些列中的值,并根据匹配的情况返回要通过外部API发布的行数据。然后,理想情况下,项目的响应被设置回同一行的不同列 我不确定搜索特定列并不仅获取该值,还获取整行并将其传递给外部API的最有效方法 这就是我曾经尝试过但不幸失败的东西。有人能帮我设计密码,请在这里救我 function findTheLastRow(){ var ui = Sprea
function findTheLastRow(){
var ui = SpreadsheetApp.getUi();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getRange("W2:W").getValues();
var searchString = "0";
if(searchString = "0")
{
var lastRow = lastRowData()
var data = {
'name':lastRow[2],
'client': lastRow[3],
'starts_at':lastRow[5],
'ends_at':lastRow[6],
'project_state':lastRow[4],
};
var payload = JSON.stringify(data);
var options = {
'method': 'POST',
'Content-Type': 'application/json',
'payload' : data,
};
var url = 'https:....';
var response = UrlFetchApp.fetch(url, options);
var json = JSON.parse(response);
var id = json ["id"];
}
可以使用getLastRow函数[1]缩小数组范围,使其仅包含包含数据的单元格。您必须考虑getValues函数[2]每次都返回一个2D数组。您可以使用setValue函数[3]在匹配的单元格上设置值
function findTheLastRow(){
var ui = SpreadsheetApp.getUi();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getRange("W2:W"+sheet.getLastRow()).getValues();
var searchString = "0";
for (var i = 0; i<range.length; i++) {
if(range[i][0] == searchString) {
var lastRow = sheet.getRange(2+i,1,1,7).getValues(); //Assuming you only need 7 columns from each row
var data = {
'name':lastRow[0][2],
'client': lastRow[0][3],
'starts_at':lastRow[0][5],
'ends_at':lastRow[0][6],
'project_state':lastRow[0][4],
};
var payload = JSON.stringify(data);
var options = {
'method': 'POST',
'Content-Type': 'application/json',
'payload' : data,
};
var url = 'https:....';
var response = UrlFetchApp.fetch(url, options);
var json = JSON.parse(response);
var id = json["id"];
//Assuming you want id value in 8th column
sheet.getRange(2+i, 8).setValue(id);
}
}
}
[1]
[2]
[3] Hi@Andres,谢谢您的光临,给了我宝贵的见解。我编辑了列号以反映我的情况。代码运行良好,并按预期获得搜索结果,但是,我无法获得发布到外部API的数据。调试未显示任何错误或格式问题。请你进一步建议好吗?你的意思是你的请求没有得到回应?噢,见鬼!,我的错。我给行编号时出错了。现在可以了。哇,你是最好的@Andres。最后一个问题,如果我想在响应中,将0-Search字符串更新为1,我该怎么做?searchString变量是您需要更改为所需字符串的变量,1,等等。