[GAS] ATOMを読み取ってGoogle Spreadsheetに書き込む
残念なことに、dlvr.itの無料プランが無くなると言うことで、ブログの記事をXにフィードするには自前で何とかするしかなくなりましたね。
そんなわけで、GASを初めてX APIを調べ始めたわけです。
で、一応、Xへの投稿ができることは分かったので、次はブログの記事の確認方法を調べていきます。
そもそもdlvr.itを設定するにあたって、ブログのAtomは調べてあったので、そのAtomを拾って解析すれば良いよね、と考えました。
拾ったAtomは保存することになります。保存先は何かと考えれば、まあ、Google Spreadsheetですよね。
なので、まずは、新しいGoogle Spreadsheetを作ります。
Googleドライブの画面で、ファイルの表示されているところで右クリックし、でてきたメニューから「Googleスプレッドシート」を選択。
その画面で、「拡張機能」→「App Script」を選んで、Google App Scriptの画面を出します。
そこで、コード.gsの中身を以下で置き換えます。
function fetchAtomFeedTsuretsu() { // AtomフィードのURL const url = 'https://tsuretsu.blogspot.com/feeds/posts/default'; // ネームスペース const ns = XmlService.getNamespace('http://www.w3.org/2005/Atom'); const ns_media = XmlService.getNamespace('http://search.yahoo.com/mrss/'); // Atomフィードを取得 let response = UrlFetchApp.fetch(url); let xml = response.getContentText(); // XMLデータをパース let document = XmlService.parse(xml); let root = document.getRootElement(); // エントリーを取得 let entries = root.getChildren('entry', ns); // スプレッドシートに書き込むための準備 let data = []; // 各エントリーのタイトルとリンクを取得 for (let entry of entries) { // タイトルを取得 let title = entry.getChildText('title', ns); // URLを取得 let href = ''; for (let link of entry.getChildren('link', ns)) { let rel = link.getAttribute('rel'); if (rel && rel.getValue() === 'alternate') { href = link.getAttribute('href').getValue(); break; // 最初の rel="alternate" のリンクのみ取得 } } // Thumbnailを取得 let thumbnail = entry.getChild('thumbnail', ns_media); let thumbnail_url = ''; if (thumbnail) { thumbnail_url = thumbnail.getAttribute('url').getValue(); } // タイトルとリンクをデータに追加 data.push([title, href, thumbnail_url]); } // スプレッドシートにデータを書き込む(追記する) if (data.length > 0) { // スプレッドシートを取得 (シート名を指定) let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1'); // スプレッドシートの最終行の下に書く sheet.getRange(sheet.getLastRow() + 1, 1, data.length, 3).setValues(data); } }
保存すると「デバッグ」の右側のプルダウンで、fetchAtomFeedTsuretsu が選択されていると思います。
それを確認したら「実行」を押して、権限を確認すれば実行開始、そして終了。
それで、Googleスプレッドシートの方の画面に切り替えれば「シート1」に実行結果が書き込まれていると思います。
と言うことで、Atomの読み込みができるようになりました。