前提・実現したいこと
GASでのスクレイピングに挑戦しています。
spanタグ内の文字列を、スプレッドシ-トに転記する工程でappendRowメソッドを使いました。(とても便利ですね!)
このときは、指定したシートのA列に91行に渡って転記されました。
次に、if文でappendRowを使うと、なんということでしょう。
取得した文字列が、指定したシートの1行A列に91回上書き処理され実行完了してしまいました。
前者は91行分の文字列がシート内に残りますが、後者は1行A列に最後に取得した文字列があるだけです。
######両者の違いを教えていただけませんか。
できることなら、if文でも取得した91行分の文字列を上書きすることなくA列に並べられるようにご指導ご鞭撻お願いします。
再現
これが、
1function scraping() { 2 const URL = "https://news.goo.ne.jp/"; 3 const response = UrlFetchApp.fetch(URL); 4 const html = response.getContentText("UTF-8"); 5 6 const sections = Parser.data(html).from('<span class="list-title-topics">').to('</span>').iterate(); 7 8 sections.forEach(article => { 9 console.log([article]); 10 var id = "sheetId"; 11 var sheetNew = SpreadsheetApp.openById(id).getSheetByName('test'); 12 sheetNew.appendRow([article]); 13 }); 14}
1function scraping() { 2 const URL = "https://news.goo.ne.jp/"; 3 const response = UrlFetchApp.fetch(URL); 4 const html = response.getContentText("UTF-8"); 5 6 const sections = Parser.data(html).from('<span class="list-title-topics">').to('</span>').iterate(); 7 8 sections.forEach(article => { 9 console.log([article]); 10 var id = "sheetId"; 11 var sheetNew = SpreadsheetApp.openById(id).getSheetByName('test'); 12 if([article]!==sheetNew){ 13 sheetNew.clear(); 14 sheetNew.appendRow([article]); 15} 16 }); 17}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。