Reputation: 2127
I haven't learned how to adjust so that if there is an error in the script when trying to capture data from openweathermat.org, the word ERROR
is written in cell A10
on the Clima
page of my spreadsheet.
I would like help and advice on how I should adjust the script to make this happen.
function TudoCompleto() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Clima');
var rg=sh.getRange("B12");
var vA=rg.getValues();
if (vA[0][0]=="OK"){
var spreadsheet = SpreadsheetApp.getActive();
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName("Clima");
var apiKey = "XXXXXXXXXXXXXXXXXXXXXXXXX";
var cityName = sheet.getRange("A1").getValue();
var apiCall = "api.openweathermap.org/data/2.5/weather?q=" + cityName +"&appid=" + apiKey;
var response = UrlFetchApp.fetch(apiCall);
var data = JSON.parse(response.getContentText());
Logger.log(response.getContentText());
var weather = data["weather"][0]; //It's an array
var sys = data["sys"];
var main = data["main"]
var location = data["name"];
var country = sys["country"];
var weatherDesc = weather["main"];
var temp = main["temp"];
var minTemp = main["temp_min"];
var maxTemp = main["temp_max"];
var weatherData = [
["Location:", location],
["Country:", country],
["Weather:", weatherDesc],
["Teaperture:", temp],
["Min Temp:", minTemp],
["Max Temp:", maxTemp]
];
sheet.getRange(3, 1, weatherData.length, weatherData[0].length).setValues(weatherData);
//The API Call works
// The Data will be retrieved like below JSON file.
//{"coord":{"lon":139,"lat":35},
//"sys":{"country":"JP","sunrise":1369769524,"sunset":1369821049},
//"weather":[{"id":804,"main":"clouds","description":"overcast clouds","icon":"04n"}],
//"main":{"temp":289.5,"humidity":89,"pressure":1013,"temp_min":287.04,"temp_max":292.04},
//"wind":{"speed":7.31,"deg":187.002},
//"rain":{"3h":0},
//"clouds":{"all":92},
//"dt":1369824698,
//"id":1851632,
//"name":"Shuzenji",
//"cod":200}
var spreadsheet = SpreadsheetApp.getActive();
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // planilha ativa
var sheet = spreadsheet.getSheetByName("Clima");
for (var i = 1; i < 2; i++) {
var cel = "F"+ i //
if (sheet.getRange(cel).getValue() != "") {
for (var u = 1; i < 2000; u++) {
var cel2 = "R"+ u //
if (sheet.getRange(cel2).getValue() == "") {
sheet.getRange("R"+u).setValue(sheet.getRange(cel).getValue());
break;
};
}
}
};
var spreadsheet = SpreadsheetApp.getActive();
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // planilha ativa
var sheet = spreadsheet.getSheetByName("Clima");
for (var i = 1; i < 2; i++) {
var cel = "B"+ i //
if (sheet.getRange(cel).getValue() != "") {
for (var u = 1; i < 2000; u++) {
var cel2 = "S"+ u //
if (sheet.getRange(cel2).getValue() == "") {
sheet.getRange("S"+u).setValue(sheet.getRange(cel).getValue());
break;
};
}
}
};
var spreadsheet = SpreadsheetApp.getActive();
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // planilha ativa
var sheet = spreadsheet.getSheetByName("Clima");
for (var i = 1; i < 10; i++) {
var cel = "H"+ i //
if (sheet.getRange(cel).getValue() != "") {
for (var u = 1; i < 2000; u++) {
var cel2 = "M"+ u //
if (sheet.getRange(cel2).getValue() == "") {
sheet.getRange("M"+u).setValue(sheet.getRange(cel).getValue());
break;
};
}
}
};
spreadsheet.getRange('Clima!A12').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('Clima!R:S').activate();
spreadsheet.getRange('Clima!I:J').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};
};
In order to publish, I had to add the entire script at the request of a member to help him understand my need. I apologize for the long script.
Upvotes: 0
Views: 44
Reputation: 64100
function TudoCompleto() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Clima');
var rg=sh.getRange("B12");
var vA=rg.getValues();
try{
if (vA[0][0]=="OK"){
var spreadsheet = SpreadsheetApp.getActive();
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName("Clima");
var apiKey = "XXXXXXXXXXXXXXXXXXXXXXXXX";
var cityName = sheet.getRange("A1").getValue();
var apiCall = "api.openweathermap.org/data/2.5/weather?q=" + cityName +"&appid=" + apiKey;
var response = UrlFetchApp.fetch(apiCall);
var data = JSON.parse(response.getContentText());
Logger.log(response.getContentText());
var weather = data["weather"][0]; //It's an array
var sys = data["sys"];
var main = data["main"]
var location = data["name"];
var country = sys["country"];
var weatherDesc = weather["main"];
var temp = main["temp"];
var minTemp = main["temp_min"];
var maxTemp = main["temp_max"];
var weatherData = [
["Location:", location],
["Country:", country],
["Weather:", weatherDesc],
["Teaperture:", temp],
["Min Temp:", minTemp],
["Max Temp:", maxTemp]
];
sheet.getRange(3, 1, weatherData.length, weatherData[0].length).setValues(weatherData);
var spreadsheet = SpreadsheetApp.getActive();
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // planilha ativa
var sheet = spreadsheet.getSheetByName("Clima");
for (var i = 1; i < 2; i++) {
var cel = "F"+ i //
if (sheet.getRange(cel).getValue() != "") {
for (var u = 1; i < 2000; u++) {
var cel2 = "R"+ u //
if (sheet.getRange(cel2).getValue() == "") {
sheet.getRange("R"+u).setValue(sheet.getRange(cel).getValue());
break;
}
}
}
}
var spreadsheet = SpreadsheetApp.getActive();
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // planilha ativa
var sheet = spreadsheet.getSheetByName("Clima");
for (var i = 1; i < 2; i++) {
var cel = "B"+ i //
if (sheet.getRange(cel).getValue() != "") {
for (var u = 1; i < 2000; u++) {
var cel2 = "S"+ u //
if (sheet.getRange(cel2).getValue() == "") {
sheet.getRange("S"+u).setValue(sheet.getRange(cel).getValue());
break;
}
}
}
}
var spreadsheet = SpreadsheetApp.getActive();
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // planilha ativa
var sheet = spreadsheet.getSheetByName("Clima");
for (var i = 1; i < 10; i++) {
var cel = "H"+ i //
if (sheet.getRange(cel).getValue() != "") {
for (var u = 1; i < 2000; u++) {
var cel2 = "M"+ u //
if (sheet.getRange(cel2).getValue() == "") {
sheet.getRange("M"+u).setValue(sheet.getRange(cel).getValue());
break;
}
}
}
}
spreadsheet.getRange('Clima!A12').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('Clima!R:S').activate();
spreadsheet.getRange('Clima!I:J').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
}
}
catch(e) {
ss.getSheetByName("Clima").getRange('A10').setValue('ERROR');
Logger.log(e);
}
}
Upvotes: 2