Javascript:如果 POST 响应正常,请使用 "Okay"在 google 工作表中设置一个单元格,否则更新 "false"

标签 javascript api google-apps-script google-sheets

因此,我正在执行一项任务,即选择 google 工作表中最后更新的行并通过外部 API 将其发布到另一个系统。

在成功的 POST 响应中,我希望将 google 工作表中的特定列设置为 true,否则如果失败,则应设置为 false。

我不确定如何解决这个问题,在此感谢您的帮助。这是发布到外部 API 的代码的第一部分

function lastRowData(){
 var ss = SpreadsheetApp.getActive()
 var sheet = ss.getActiveSheet()
 var lastRow = sheet.getLastRow() 
 var lastCol = sheet.getLastColumn()
 var lastRowData = sheet.getRange(lastRow,1,1,lastCol).getValues()
 return lastRowData[0]
}
function myFunction() {
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://api.10000ft.com/api/v1/projects?auth=token';
var response = UrlFetchApp.fetch(url, options);
  Logger.log(response);
 return response.getContentText();
}

理想情况下是这样的:

  if (response.ok){
    activesheet.getRange(lastRow,1,1,lastCol).setvalue("true")
    } else {
      activesheet.getRange(lastRow,1,1,lastCol).setvalue("false")
} 

最佳答案

您可以使用 HTTPResponse.getResponseCode()

function getLastRowData(sheet) {

    var lastRow = sheet.getLastRow();
    var lastCol = sheet.getLastColumn();
    var lastRowData = sheet.getRange(lastRow, 1, 1, lastCol).getValues();

    return {data: lastRowData[0], row: lastRow};
}

function myFunction() {

    var ss = SpreadsheetApp.getActive();
    var sheet = ss.getActiveSheet();

    var lastRowData = getLastRowData(sheet);
    var lastRow = lastRowData.row;

    var data = lastRowData.data;

    var data = {

        'name': data[2],
        'client': data[3],
        'starts_at': data[5],
        'ends_at': data[6],
        'project_state': data[4],
    };
    var payload = JSON.stringify(data);

    var options = {
        'method': 'POST',
        'Content-Type': 'application/json',
        'payload': payload,
        'muteHttpExceptions': true
    };
    var url = 'https://api.10000ft.com/api/v1/projects?auth=token';
    var response = UrlFetchApp.fetch(url, options);

    if (response.getResponseCode() === 200) { //or whatever you think will work, 200, 201...
        sheet.getRange('K' + lastRow).setValue("true");
    }
    else {
        sheet.getRange('K' + lastRow).setValue("false");
    }
}

如果您只为 1 个单元格设置值,则可以使用 Sheet.getRange(row, num)版本(带 2 个参数)

关于Javascript:如果 POST 响应正常,请使用 "Okay"在 google 工作表中设置一个单元格,否则更新 "false",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58935065/

相关文章:

javascript - 使用 Object.values(map) 时,类型 'values' Typescript 上不存在属性 'ObjectConstructor'

google-apps-script - 谷歌应用程序脚本中的同时执行限制

api - WebDriver Selenium API : identifying a WebElement in XPath

php - 用于英国邮件WebService API的PHP Soap客户端?

api - 内部服务器错误是否应该在 swagger 中记录?

javascript - 使用 .withSuccessHandler 更改输入按钮的属性

google-apps-script - 在具有 Html 服务的站点中显示电子表格数据

javascript - 分组 ng-repeat 和修改 DOM 外部指令

javascript - Myscript 在我的本地主机上不工作,但如果在 jsfiddle 中就没问题

javascript - Silverlight 没有 html/css/javascript?