const myAccessToken = "your--API--access--token--here" const baseUrl = "https://app.powershaper.io/meters/api/v1" const sheet = SpreadsheetApp.getActiveSheet(); /** * Call the list meters endpoint to get a list of the meters we can access */ function getMeters() { var url = `${baseUrl}/meters` var response = UrlFetchApp.fetch( url, { method: "get", headers: { Authorization: "Token " + myAccessToken }, } ) return JSON.parse(response.getContentText()) } /** * Call the request usage records endpoint to get a daily profile for a period */ function getDailyProfile(start, end, meterID, utility) { data = { tz: "Europe/London", start: start, end: end, aggregate: "profile" } var url = `${baseUrl}/meter/${meterID}/${utility}?` for (var d in data) { url += (d + "=" + encodeURIComponent(data[d]) + "&") } var response = UrlFetchApp.fetch( url, { method: "get", headers: { Authorization: "Token " + myAccessToken }, } ) return JSON.parse(response.getContentText()) } function LoadProfilesIntoSheet() { const meterList = getMeters() // Choose the first meter in the list const meterID = meterList[0].consent_uuid const january = getDailyProfile("2021-01-01","2021-01-31",meterID, "electricity") const july = getDailyProfile("2021-07-01","2021-07-31", meterID, "electricity") // Write some headers in sheet.getRange(1,1).setValue("Time") sheet.getRange(1,2).setValue("January") sheet.getRange(1,3).setValue("July") for (hhOfDay=1; hhOfDay<=48; hhOfDay++) { sheet.getRange(hhOfDay+1,1).setValue(january[hhOfDay-1].time); sheet.getRange(hhOfDay+1,2).setValue(january[hhOfDay-1].energy_kwh); sheet.getRange(hhOfDay+1,3).setValue(july[hhOfDay-1].energy_kwh); } }