尝试使用Google表格连接到Enphase solar API无法使代码正常工作?

问题描述

背景: 我几乎没有编码方面的知识,但是我希望能够使用Enphase系统中的太阳能输出数据来触发热水服务的运行。我正在尝试通过将太阳能数据移动到Google表格中,然后在太阳能发电量足够高时按下按钮。

我已从另一个问题复制并更改了此代码,但无法正常工作。我收到此错误:异常:https://api.enphaseenergy.com的请求失败,返回了代码401。服务器响应被截断:{“原因”:“ 401”,“消息”:[“未授权访问请求的资源。”,“用户找不到。”]}(使用MutantHttpExceptions选项检查完整响应)。 (第10行,文件“进入图纸”)。

我不知道从这里去哪里。有任何想法我做错了吗?谢谢

代码

function getReport() 
{
var url = 'https://api.enphaseenergy.com/api/v2/systemskey=<apikey>&user_id=<userid>'

var token = UrlFetchApp.fetch(url,{method:'POST',muteHttpExceptions: true});
var token_data = JSON.parse(token.getContentText());
var access_token = token_data.access_token

var url2 = 'https://api.enphaseenergy.com/api/v2/systems/1692404/stats&key<apikey>&user_id=<userid>'
var report = UrlFetchApp.fetch(url2,{method:'GET',headers:{Authorization: 'Bearer ' + '<apikey>'}});
Logger.log(report)

SpreadsheetApp.getActiveSheet().getSheetByName('Solar').getRange('A1').setValue(report); 
}

解决方法

在我看来,您应该向他们索取API密钥,然后他们会向您发出一个API密钥,您可以使用符号将其放入网址的各个部分。

也就是说,您需要一个真正的api“密钥”和一个从enphase获得的真实用户ID。

,

我设法使它正常工作。我所做的只是更改了一些带有问号而不是'&'的愚蠢小错误。希望这对其他人有帮助。 将数据保存在Google工作表中后,我先使用= transpose(split(A1)),然后再使用另一个split函数来获取能够与IFTTT配合使用的正确格式。

function getReport() 
{
  var url = 'https://api.enphaseenergy.com/api/v2/systems?key=<apikey_goes_here>&user_id=<userid_goes_here>'

  var token = UrlFetchApp.fetch(url,{method:'POST',muteHttpExceptions: true});
  var token_data = JSON.parse(token.getContentText());
  var access_token = token_data.access_token

  var url2 = 'https://api.enphaseenergy.com/api/v2/systems/1692404/summary?key=<apikey_goes_here>&user_id=<userid_goes_here>'
  var report = UrlFetchApp.fetch(url2,{method:'GET',headers:{Authorization: 'Bearer ' + '<userid_goes_here>'}});
  Logger.log(report)



  var sheet = SpreadsheetApp.getActive().getSheetByName('Solar');
  sheet.getRange('A1').setValue(report)

}