google-apps-script - 如果发生脚本错误,请在电子表格中添加答案
问题描述
我还没有学会如何调整,以便在尝试从 openweathermat.org 捕获数据时脚本中出现错误,这个词ERROR
会写在我的电子表格页面A10
上的单元格中。Clima
我需要有关如何调整脚本以实现这一点的帮助和建议。
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);
};
};
为了发布,我必须应会员的要求添加整个脚本,以帮助他了解我的需求。我为冗长的脚本道歉。
解决方案
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);
}
}
推荐阅读
- node.js - 路由功能 Express.js 和从 json 检索数据
- java - Java SSL 上下文未初始化
- python - Vim - Python 中的空格缩进
- javascript - 无法在 HTML 中正确地将文本与动画对齐
- powershell - 如何在 Pipelines 中安装推送到 Azure Artifacts 的 PowerShell 模块?
- oracle - 找到详细信息 TAdoQuery 后出现异常
- latex - 将多个章节合并到一个论文文档中
- python - 交换数组中的元素导致问题
- javascript - 如何在 MySQL 的周期中从表中选择一个随机 id?
- python - cv.findContours() - ValueError: no enough values to unpack (expected 3, got 2)