スクレイピングは禁止されてるので実際には使わないでね。
function myFunction() { var book = SpreadsheetApp.getActiveSpreadsheet(); var sheetData = book.getSheetByName("シート1"); var colID = 1; var colURL = 2; var colContributeCount_code = 1; var colContributeCount_date = 2; var rowStartData = 2 var rowEndData = sheetData.getDataRange().getLastRow() var start_i = 0; var page = 70; while(1){ try { var i = start_i; var url = 'https://info.finance.yahoo.co.jp/ranking/?kd=41&tm=d&vl=a&mk=1&p=' + page.toString(10); var response = UrlFetchApp.fetch(url); var html = response.getContentText('UTF-8'); var myReCode = /<a href="https:\/\/stocks.finance.yahoo.co.jp\/stocks\/detail\/\?code\=(\d{4})\./g; var myReDate = /<td class="txtcenter bgyellow01">(\d{4}\/\d{1,2}\/\d{1,2}?)<\/td>/g; var myArray; var arr_code = []; var arr_date = []; var i_max = 0; while ((myArray = myReDate.exec(html)) !== null) { arr_date[i] = myArray[1]; i++; } i = start_i; while ((myArray = myReCode.exec(html)) !== null) { arr_code[i] = myArray[1]; i++; } // 1ページ目で大体終わりなので抜けるようにしとく // データ更新するときなどはここコメントアウトすると良いでしょう break; page++; start_i = i; Utilities.sleep(1000); }catch (ex) { break; } } i_max = i; // コードでA列を検索。なかったら追加 i = 0; while (i < i_max) { var col = get_array(sheetData,"A"); var i_code = parseInt(arr_code[i],10); var row = get_row(i_code,"A",sheetData); if( row == 0 ){ sheetData.insertRowBefore(1); sheetData.getRange(1, colContributeCount_code).setValue(arr_code[i]); sheetData.getRange(1, colContributeCount_date).setValue(arr_date[i]); }else{ //既存のデータが見つかったらその時点で終了とする break; } i++; } Browser.msgBox("確認", "終了!", Browser.Buttons.OK); } function get_row(key, col, sh){ var array = get_array(sh, col); var row = array.indexOf(key) + 1; return row; } function get_array(sh, col) { var last_row = sh.getLastRow(); var range = sh.getRange(col + "1:" + col + last_row) var values = range.getValues(); var array = []; for(var i = 0; i < values.length; i++){ array.push(values[i][0]); } return array; }