Ошибка сценария Google App 404: ответ не определен - PullRequest
1 голос
/ 12 февраля 2020

Мой код должен получать некоторые данные из таблицы google и POST в систему через внешний API. Однако при запуске кода я продолжаю сталкиваться с ошибкой 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.md https://github.com/10Kft/10kft-api/blob/master/sections/time-entries.md

1 Ответ

1 голос
/ 13 февраля 2020

Как насчет этой модификации?

Точки модификации:

  • Content-Type нельзя напрямую использовать для опции UrlFetchApp.fetch().
  • var payload = JSON.stringify(data); не используется.
  • options не используется при var response = UrlFetchApp.fetch(url).getContentText();. В этом случае он запрашивает URL-адрес с помощью метода GET.
  • var url = 'https://api.10000ft.com/api/v1/users/' + userid + '/time_entries?auth=key; не заключен в '.

К сожалению, из официального документа я не смог не понимаю, нужно ли отправлять эти данные в json данных или данных формы. Поэтому я предложил следующие 2 шаблона. Пожалуйста, проверьте их.

Модифицированный скрипт 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 являются правильными.

Ссылка:

...