Google App脚本错误404:未定义响应

问题描述 投票:0回答:1

我的代码应该通过外部API从Google表格和POST获取一些数据。但是,我在运行代码时一直遇到错误404。

调试时,表明未定义响应。这是带有问题的代码的一部分。我想念什么吗?

function postLeave(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();  
  // used getLastRow() function [1] to narrow the array to have only cells with data.
var range = sheet.getRange("K2:K"+sheet.getLastRow()).getValues();
var searchString = "";


for (var i = 0; i<range.length; i++) {
    if(range[i][0] == searchString) {
    var lastRow = sheet.getRange(2+i,1,1,10).getValues();
    var userid = sheet.getRange("I2:I" + sheet.getLastRow()).getValues();


    var data = {
        //'user_id': lastRow[0][8],
        "leave_type_id":lastRow[0][9],
        "date":lastRow[0][7],
        "hours":lastRow[0][6],
 };
      var payload = JSON.stringify(data);
      var options = {
        'method': 'POST',
        'Content-Type': 'application/json',
        'payload' : data,
      };
      var url = 'https://api.10000ft.com/api/v1/users/' + userid + '/time_entries?auth=key;
      var response = UrlFetchApp.fetch(url).getContentText();
      if (response === 200) {
      //var json = JSON.parse(response);         
      sheet.getRange(2+i, 11).setValue(1); 
      }
    else {
     sheet.getRange(2+i, 11).setValue(0);

     Logger.log(response)

    }
 }
}
}

文档

enter image description here

挑战端点。

https://github.com/10Kft/10kft-api/blob/master/sections/assignables.md

https://github.com/10Kft/10kft-api/blob/master/sections/leave-types.mdhttps://github.com/10Kft/10kft-api/blob/master/sections/time-entries.md

post google-apps-script google-sheets response urlfetch
1个回答
0
投票

此修改如何?

修改点:

  • [Content-Type不能直接用于UrlFetchApp.fetch()的选项。
  • var payload = JSON.stringify(data);未使用。
  • options不用于var response = UrlFetchApp.fetch(url).getContentText();。在这种情况下,它将使用GET方法请求URL。
  • [var url = 'https://api.10000ft.com/api/v1/users/' + userid + '/time_entries?auth=key;不包含在'中。

[不幸的是,从官方文档中,我无法理解是否需要以json数据或form数据形式发送此数据。因此,我提出了以下两种模式。请检查它们。

修改脚本1:

在此修改后的脚本中,数据作为json数据发送。请设置每个变量。并且还请设置key

从:
var payload = JSON.stringify(data);
var options = {
  'method': 'POST',
  'Content-Type': 'application/json',
  'payload' : data,
};
var url = 'https://api.10000ft.com/api/v1/users/' + userid + '/time_entries?auth=key;
var response = UrlFetchApp.fetch(url).getContentText();
至:
var payload = JSON.stringify(data);
var options = {
  'method': 'POST',
  'contentType': 'application/json',
  'payload' : payload,
};
var key = "###"; // <--- Please set your key.
var url = 'https://api.10000ft.com/api/v1/users/' + userid + '/time_entries?auth=' + encodeURIComponent(key);
var response = UrlFetchApp.fetch(url, options).getContentText();

修改的脚本2:

在此修改后的脚本中,数据作为表单数据发送。请设置每个变量。并且还请设置key

从:
var payload = JSON.stringify(data);
var options = {
  'method': 'POST',
  'Content-Type': 'application/json',
  'payload' : data,
};
var url = 'https://api.10000ft.com/api/v1/users/' + userid + '/time_entries?auth=key;
var response = UrlFetchApp.fetch(url).getContentText();
至:
var options = {
  'method': 'POST',
  'payload' : data,
};
var key = "###"; // <--- Please set your key.
var url = 'https://api.10000ft.com/api/v1/users/' + userid + '/time_entries?auth=' + encodeURIComponent(key);
var response = UrlFetchApp.fetch(url, options).getContentText();

注意:

  • 在以上修改的脚本中,它假定data对象和key中的每个值都是正确的。

参考:

© www.soinside.com 2019 - 2024. All rights reserved.