Этот сценарий приложения прослушивает запрос POST и возвращает данные в лист
//this is a function that fires when the webapp receives a GET request
function doGet(e) {
return HtmlService.createHtmlOutput("request received");
}
//this is a function that fires when the webapp receives a POST request
function doPost(e) {
var params = JSON.stringify(e.postData.contents);
params = JSON.parse(params);
var myData = JSON.parse(e.postData.contents);
var testRunUrl = myData.test_run_url;
var testRunName = myData.test_name;
var testRunEnv = myData.environment_name;
var testRunResult = myData.result;
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = Math.max(sheet.getLastRow(),1);
sheet.insertRowAfter(lastRow);
var timestamp = new Date();
sheet.getRange(lastRow + 1, 1).setValue(timestamp);
sheet.getRange(lastRow + 1, 2).setValue(testRunName);
sheet.getRange(lastRow + 1, 3).setValue(testRunEnv);
sheet.getRange(lastRow + 1, 4).setValue(testRunResult);
sheet.getRange(lastRow + 1, 5).setValue(testRunUrl);
sheet.getRange(lastRow + 1, 6).setValue(params);
SpreadsheetApp.flush();
return HtmlService.createHtmlOutput("post request received");
}
В столбце 6 значение параметра следующее (пример)
{"resource":"https://api.mercadolibre.com/collections/notifications/2951993376","topic":"payment"}
Мне нужнозапустить вызов API на основе значения url in params, вернуть значение электронной почты и отправить его обратно в соответствующую строку на листе.
, поэтому для приведенного выше примера вызова API будет url: https://api.mercadopago.com/v1/payments/2951993376?access_token=APP_USR-7641393791309669-082521-8426042efc7686ae9bff4b135f5gdhfa-270831598
Для каждой новой строки мне нужно вызвать API-вызов:
https://api.mercadopago.com/v1/payments/[ID]?access_token=APP_USR-7641393791309669-082521-8426042efc7686ae9bff4b135f5gdhfa-270831598
и вернуть обратно значение "payer.email" в столбец 7 этой строки, повторяя это для каждой новой строки.
Эта функция возвращает значение payer.email
function myFunction() {
var url="https://api.mercadopago.com/v1/payments/5267820258?access_token=APP_USR-7641393791309669-082521-8426042efc76errae9bfg5513ff53dffa-270831598";
var response=UrlFetchApp.fetch(url);
var json=response.getContentText();
var data=JSON.parse(json)
var emailmercadopago=data.payer.email;
Logger.log(emailmercadopago);
}
Пример листа: https://docs.google.com/spreadsheets/d/1h1Ckrv_NM0evc_0ons_d6xZvy-DWy8rYIqG0vIHWMpg/edit?usp=sharing
Но я не могу собрать их вместе, как хочу. Как я могу запустить такой вызов API для каждой новой добавленной строки и вернуть письмо обратно в строку на листе в столбце 7
ОБНОВЛЕНО Вот так это выглядит сейчас, но не работает:
function getEmailFromParams(params) {
var resource = JSON.parse(params).resource;
var id = resource.substring(resource.lastIndexOf('/')+1);
return getEmailFromid(id);
}
function getEmailFromid(id) {
var url="https://api.mercadopago.com/v1/payments/"+id+"?access_token=APP_USR-7641393791309669-082521-8426042efc7686ae9bff4b13ff53dffa-270831598";
var response=UrlFetchApp.fetch(url);
var json=response.getContentText();
var data=JSON.parse(json)
try {
var emailmercadopago=data.payer.email || "No Email";
return emailmercadopago;
} catch (err) {
return "Problem getting Email";
}
}
function doPost(e) {
var params = JSON.stringify(e.postData.contents);
params = JSON.parse(params);
var myData = JSON.parse(e.postData.contents);
var testRunUrl = myData.test_run_url;
var testRunName = myData.test_name;
var testRunEnv = myData.environment_name;
var testRunResult = myData.result;
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = Math.max(sheet.getLastRow(),1);
sheet.insertRowAfter(lastRow);
var timestamp = new Date();
sheet.getRange(lastRow + 1, 1).setValue(timestamp);
sheet.getRange(lastRow + 1, 2).setValue(testRunName);
sheet.getRange(lastRow + 1, 3).setValue(testRunEnv);
sheet.getRange(lastRow + 1, 4).setValue(testRunResult);
sheet.getRange(lastRow + 1, 5).setValue(testRunUrl);
sheet.getRange(lastRow + 1, 6).setValue(params);
sheet.getRange(lastRow + 1, 7).setValue(getEmailFromParams("F"+(lastRow+1)))
SpreadsheetApp.flush();
return HtmlService.createHtmlOutput("post request received");
}