Expensify API and google script

I've been trying to create a google script to interact with Expensify API, but I never can make it work and always get the same error :
This is the code : "
function createExpensifyReport() {
var reportName = "Mix_test";
var data = {
"type": "create",
"credentials": {
"partnerUserID": "My_partnerUserID",
"partnerUserSecret": "My_partnerUserSecret"
},
"inputSettings": {
"type": "report",
"report": {
"reportName": reportName
}
}
};
var options = {
"method": "post",
"headers": {
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0"
},
"muteHttpExceptions": true,
"payload": JSON.stringify({
"requestJobDescription": "Create report",
"requestData": JSON.stringify(data)
})
};
Logger.log(options.payload)
var response = UrlFetchApp.fetch("[https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations"](https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations), options);
Logger.log(response.getContentText());
}
"
Evertime I run this googlescript code I get an error :
"
{"responseMessage":"'requestJobDescription' is missing","responseCode":500}
"
I don't see where I go it wrong.
the Logger.log gives me the right Payload :
"
{"requestJobDescription":"Create report","requestData":"{\"type\":\"create\",\"credentials\":{\"partnerUserID\":\"partnerUserID\",\"partnerUserSecret\":\"partnerUserSecret\"},\"inputSettings\":{\"type\":\"report\",\"report\":{\"reportName\":\"Ann_Mix_test\"}}}"}
"
Can anyone tell me where is my mistake?
Answers
-
Forget it I found a way:
var payload = { requestJobDescription: JSON.stringify({ type: 'create', credentials: { partnerUserID: "partnerUserID", //// needed partnerUserSecret: "partnerUserSecret" //// needed }, inputSettings: { type: "report", policyID: policyID, //// needed report: { title: reportName }, employeeEmail: "[email protected]", //// needed expenses: [], } }) }; Logger.log(payload) var options = { 'method': 'post', 'payload': payload }; var response = UrlFetchApp.fetch(apiUrl, options); var responseData = JSON.parse(response.getContentText()); Logger.log(response) // Handle the response based on your specific requirements if (response.getResponseCode() === 200 && responseData.someKey) { // Successful response handling } else { // Error or unsuccessful response handling } }