([\s\S]*?)<\/tr>/i;
var match_precip = regexp_precip.exec(tenki_table);
var tenki_precip = match_precip[1];
var tenki_precip_arr = tenki_precip.split("
");
sheet.getRange(4, 1).setValue("降水確率");
for(var i=0;i<tenki_precip_arr.length;i++){
var item = tenki_precip_arr[i];
item = item.replace(/降水確率|(\%)/g, '');
item = delTag(item);
item = trim(item);
sheet.getRange(4, i+2).setValue(item);
}
var msg = "今日の天気をお知らせします。";
var asa_weather = sheet.getRange(2, 3).getValue();
var asa_temperature = sheet.getRange(3, 3).getValue();
var asa_precip = sheet.getRange(4, 3).getValue();
msg += "朝の天気は、" + asa_weather + "。";
msg += "気温は、" + asa_temperature + "度。";
msg += "降水確率、" + asa_precip + "パーセント。";
var hiru_weather = sheet.getRange(2, 5).getValue();
var hiru_temperature = sheet.getRange(3, 5).getValue();
var hiru_precip = sheet.getRange(4, 5).getValue();
msg += "昼の天気は、" + hiru_weather + "。";
msg += "気温は、" + hiru_temperature + "度。";
msg += "降水確率、" + hiru_precip + "パーセント。";
var yoru_weather = sheet.getRange(2, 7).getValue();
var yoru_temperature = sheet.getRange(3, 7).getValue();
var yoru_precip = sheet.getRange(4, 7).getValue();
msg += "夜の天気は、" + yoru_weather + "。";
msg += "気温は、" + yoru_temperature + "度。";
msg += "降水確率、" + yoru_precip + "パーセント。";
sheet.getRange(5, 1).setValue(msg); //デバッグ用
Logger.log(msg); //今日の天気をお知らせします。朝の天気は、曇り。気温は、23度。降水確率、20パーセント。昼の天気は、小雨。気温は、24度。降水確率、60パーセント。夜の天気は、曇り。気温は、22度。降水確率、50パーセント。
}
function trim(str){
return str.replace(/(^\s+)|(\s+$)/g, "");
}
function delTag(str){ //tag削除
return str.replace(/<("[^"]"|'[^']'|[^'">])*>/g,'');
}
こんな感じで、取得したデータをわかりやすく、スプレッドシートに表示してみました。
このスクリプトをタイマー設定して、最後に出てきたメッセージを Google Home に投げて、音声出力しています。
データの取得方法が、APIではなく、スクレイピングなので、tenki.jp のHTMLテンプレートが変われば、またそれに対応しないといけません。