前提・実現したいこと
Google apps scriptと以下のサイトから引用したyahoo検索プログラムを使用し、指定した単語を検索しスプレットシートに記述するプログラムを書こうと思っております。
サイト
GASでYahooニュースのスクレイピング
https://www.wassyoi-hack.com/dev/gas/scraping-yahoo
発生している問題・エラーメッセージ
var Range=sheet.getRange(2,2,text.length,text.length).setValues(text);
の部分で
1 は無効な範囲です。2 にする必要があります。(行 84、ファイル「コード」)
と出ています。
該当のソースコード
// 最新ニュースかどうかの判断に必要
var date = new Date();
var values = [];
function myFunction() {
var rowValues = ['学校'];
// スプレッドシートに登録したキーワードでYahooニュースを検索、LINEへ送る、のループ
rowValues.forEach( function searchWord( word ) {
// キーワードが日本語を含んだりするときのためのURLエンコード
var encoded = encodeURIComponent(word);
var text = [[""]];
text += '\n' + text + word + '\n';
// 検索のURL
var url = 'https://news.yahoo.co.jp/search/'
- '?ei=UTF-8&aq=-1&ai=0FhK6io5Rl.OgYUBY1xjLA&ts=2425&p='
- encoded + '&meta=vc%3D&fr=sfp_as';
// 取得したHTMLから欲しい部分を抜き出す作業
// 上記URLのページを取得し、htmlをテキストで抜き出す
var html = UrlFetchApp.fetch(url).getContentText();
// 検索結果に出ている各記事のテキスト取得
var doc = Parser.data(html)
.from('<div id="contents" role="main">')
.to('<hr class="separation">')
.build();
// 記事へのリンク取得
var as = Parser.data(doc)
.from('<a href="')
.to('"')
.iterate()
// 広告は除外
as = as.filter(function(v){
return (v.indexOf("https://headlines.yahoo.co.jp/") !== -1);
});
// 記事名取得
var names = Parser.data(doc)
.from('<p class="a">')
.to("</p>")
.iterate()
// 検索結果に表示されている記事のリード文章取得
var descs = Parser.data(doc)
.from('<span class="ct1">')
.to("</span>")
.iterate()
// 日付取得
var dueDate = Parser.data(doc)
.from('<span class="d">')
.to("</span>")
.iterate()
// 今日の日付を基に、最新のニュースのみ取り出す処理
/* for(i=0;i<as.length;++i){
if (dueDate[i].indexOf((date.getMonth() +1 ) + "月" + date.getDate() + "日")
!= -1 || dueDate[i].indexOf((date.getMonth() +1 )
+ "月" + (date.getDate() -1 ) + "日") != -1) {
var values = [[values + (i+1)], [as[i]],[names[i]],[descs[i]]];
var sheet=SpreadsheetApp.getActiveSheet();
var Range=sheet.getRange(4,4,4,4).setValues(values);
} //if文の終了
else{
values = ["なし"];
}
} //for文の終了*/
var text = [[as],[names]];
Logger.log(text);
var sheet=SpreadsheetApp.getActiveSheet();
var Range=sheet.getRange(2,2,text.length,text.length).setValues(text);
});
}
試したこと
配列にする等は実行しました。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/05/13 01:36