无法从Apps脚本创建Google Fit DataSource。始终获取HTTP 500,后端错误

时间:2017-10-25 07:47:47

标签: google-apps-script google-fit

我花了很多时间尝试在Google Fit中创建一个DataSource而没有任何成功。总是,我得到HTTP 500和消息:

“{”error“:{”errors“:[{”domain“:”global“,”reason“:”backendError“,”message“:”Backend Error“}],”code“:500,”消息“:”后端错误“}}”

function testGoogleFitAPI() {
  var fitService = getFitService();  
  if (fitService.hasAccess()) {
    var token = fitService.getAccessToken();

    var url = "https://www.googleapis.com/fitness/v1/users/me/dataSources";

    var dataToCreateDataSource = '{"dataStreamName":"DataSource2","type":"derived","application":{"detailsUrl":"http://script.google.com","name":"GAS to Google Fit Weight Logger Script","version":"1"},"dataType":{"field":[{"name":"weight","format":"floatPoint"}],"name":"com.google.weight"},"device":{"manufacturer":"No Manufacturer  Info Available","model":"No Model Info Available","type":"unknown","uid":"123456789","version":"1"}}'; 
    var payload = JSON.stringify(dataToCreateDataSource);  

    var params = {
      "method"      : "post",
      "headers"     : {"Authorization": "Bearer " + token},
      "muteHttpExceptions": true,
      "contentType" : "application/json",
      "payload"     : payload      
    };     

    try
    {
      var response = UrlFetchApp.fetch(url, params);

      var responseCode = response.getResponseCode();
      var responseBody = response.getContentText();
      if (responseCode === 200) // Successful API call
      {
        var responseJson = JSON.parse(responseBody)
      }
      else
      {
        Logger.log(Utilities.formatString("Request failed with Web API's HTTP Response: " + responseCode + " (Expected 200)\n HTTP Response Body: " + responseBody));
      }
    }
    catch (e)
    {
      logToSheet(0, "Error while calling the Web API: \n" + e.name + " on line# " + e.lineNumber + " --> " + e.message);
    }
  } else {
    var authorizationUrl = fitService.getAuthorizationUrl();
    Logger.log('Open the following URL and re-run the script: %s', authorizationUrl);    
  }  
}

格式化的有效负载是:

{
  "dataStreamName": "DataSource2",
  "type": "derived",
  "application": {
    "detailsUrl": "http://script.google.com",
    "name": "GAS to Google Fit Weight Logger Script",
    "version": "1"
  },
  "dataType": {
    "field": [
      {
        "name": "weight",
        "format": "floatPoint"
      }
    ],
    "name": "com.google.weight"
  },
  "device": {
    "manufacturer": "No Manufacturer  Info Available",
    "model": "No Model Info Available",
    "type": "unknown",
    "uid": "123456789",
    "version": "1"
  }
}

当我在OAuth2 Playground中使用相同的有效负载和从上面的脚本生成的令牌时,数据源已成功创建(HTTP 200)。它无法使用Google Apps脚本。

当我使用OAuth2 Playground创建DataSource时,我可以创建DataSet并成功插入DataPoints。

我想知道在Apps脚本中导致错误的原因是什么?

0 个答案:

没有答案