[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の読み込みができるようになりました。





このブログの人気の投稿

[Blender3.3] mmd_toolsはどれが最新?

パズドラ 転生龍刀士降臨周回編成 (ベア戦)

パズドラ HUNTER☓HUNTER キメラアント周回編成 (ペア戦)