GASでスプシのキーワードから検索結果のスクショを保存
情報が少ないGASの実装例をメモ程度に残します。概要、キーワードと日付が並べられたスプシに対して以下のスクリプトを実行すると、明日の日付と隣り合わせになっているキーワードについて設定した関連ワードとOR検索をして、一覧のページをフルスクリーンでスクリーンショットを撮り、指定したGoogleDriveに保存するもの。
1. 実装したコード
function myFunction() {
var spreadsheet = SpreadsheetApp.openByUrl('スプシのURL');
var sheet = spreadsheet.getSheetByName('シート1'); // 検索ワード記載シート
var lastrow = sheet.getLastRow(); // 最後の行番号
var searchWords = sheet.getRange("A2:A"+lastrow).getValues();
var searchDates = sheet.getRange("B2:B"+lastrow).getValues();
var apiKey ="アクセスキー";//APIFLESHのアクセスキー
var folderId ="ID"; // ここに保存先GoogleドライブID
var date = new Date();
date.setDate(date.getDate() + 1); //明日の日付
var tomorrow = Utilities.formatDate(date, 'Asia/Tokyo', 'YYYY/MM/dd');
var today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'YYYY/MM/dd');
for(let i = 0; i<lastrow-1; i++) {
if(typeof searchDates[i][0] == typeof new Date()){
Logger.log(Utilities.formatDate(searchDates[i][0], 'Asia/Tokyo', 'YYYY/MM/dd'));
if(Utilities.formatDate(searchDates[i][0], 'Asia/Tokyo', 'YYYY/MM/dd') == today){
// 検索結果取得
var displayNum = 30; // 検索数
var url = "https://www.google.com/search?hl=ja&as_q="+searchWords[i][0]+"&as_epq=&as_oq=関連キーワード&num="+displayNum;
var encodeUrl = url.replace(/[^*+.-9A-Z_a-z-]/g,function(s){
var c=s.charCodeAt(0);
return (c<16?"%0"+c.toString(16):c<128?"%"+c.toString(16):c<2048?"%"+(c>>6|192).toString(16)+"%"+(c&63|128).toString(16):"%"+(c>>12|224).toString(16)+"%"+(c>>6&63|128).toString(16)+"%"+(c&63|128).toString(16)).toUpperCase()
});
var requestUrl = "https://api.apiflash.com/v1/urltoimage?access_key="+apiKey+"&full_page=true&url="+encodeUrl;
Logger.log(url);
Logger.log(requestUrl);
try {
var response =UrlFetchApp.fetch(requestUrl).getContentText(); // ここで1回リクエストを送って画像を作らせる
Utilities.sleep(1000 * 20); // 画像出来上がるまで1分待機
var image = UrlFetchApp.fetch(requestUrl).getBlob(); // ここで画像DL
var folder = DriveApp.getFolderById(folderId);
folder.createFile(image).setName(today+"_"+searchWords[i][0]);//日付で画像の名前を付ける
} catch (e) {
Logger.log("取得エラー");
}
}
}
}