サイトのスクリーンショットを自動でtweetする
まず、GCPでサイトのスクリーンショットを作成するwebアプリを作成
公式の上記を参照しました。
スクリーンショットの設定には
を参照しました。
const puppeteer = require('puppeteer');
let page;
async function getBrowserPage() {
// Launch headless Chrome. Turn off sandbox so Chrome can run under root.
const browser = await puppeteer.launch({args: ['--no-sandbox']});
return browser.newPage();
}
exports.screenshot = async (req, res) => {
const url = req.query.url;
if (!url) {
return res.send('Please provide URL as GET parameter, for example: <a href="?url=https://example.com">?url=https://example.com</a>');
}
if (!page) {
page = await getBrowserPage();
}
await page.setViewport( {
width: 1500,
height: 750
} );
await page.goto(url);
const imageBuffer = await page.screenshot({fullPage: true } );
res.set('Content-Type', 'image/png');
res.send(imageBuffer);
};
公式でのコードをコピペして、スクリーンショットしたいページの大きさに合わせて、viewportを調整しています。
を参照してGASでgoogle driveに保存します。
function saveImage() {
var folderId = 'YOUR_GOOGLE_DRIVE_FOLDER_ID'; // ここに保存先GoogleドライブID
var today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'YYYY-MM-dd');
var requestUrl = 'YOUR_GPC_NEW_URL'; // GCPで生成したスクリーショットを作成するURL
try {
UrlFetchApp.fetch(requestUrl); // ここで1回リクエストを送って画像を作らせる
Utilities.sleep(1000 * 60); // 画像出来上がるまで1分待機
var image = UrlFetchApp.fetch(requestUrl).getBlob(); // ここで画像DL
var folder = DriveApp.getFolderById(folderId);
folder.createFile(image).setName(today);
} catch (e) {
Browser.msgBox(e);
}
}
IFTTTでgoogle driveとTwitterと連携して、スクリーンショットが保存されたら、tweetされます。
この記事が気に入ったらサポートをしてみませんか?