プログラミング

Google Apps Script (GAS)でBlueskyのbotを作る

投稿日:

Blueskyで何かやりたくなったので、PRTimesのプレスリリースを自動投稿するbotを作ってみました。
Google Apps Scriptを使うと、無料でbotが作れるので便利です。
せっかくなので作り方などをまとめておきます。といっても読んだブログの紹介ぐらいですが。

Google Apps Scriptからポストを投稿する

Bluesky API と Google Apps Script (GAS) でポストを投稿・取得・削除する
↑この記事そのまんま書けばそれで動きます。

定期実行する

Google Apps Scriptに備わっているトリガー機能を使います。
Google Apps Scriptのトリガーについて
↑この記事に載っている「時間主導型」のトリガーを使ってください。

他のマシン・サーバーから情報を送る

Google Apps ScriptにWeb APIを建てる機能があるので、それでWeb APIを建てましょう。
POSTで情報を投げられます。詳しくは↓の記事を参照。
Google Apps Script(GAS)で自宅サーバーの死活監視をする
(Web APIを叩ける環境があるなら、直接BlueskyのAPIを叩けばいいのでは、という話もありますが…)

URLにリンクを張る

これが地味に大変です。
単にテキストで書いてもURLにリンクが張られません。
ファセット(facets)というのを定義する必要があります。
詳しくはBlueskyの公式ドキュメントに説明がありますが、テキストのどこからどこまでリンクを張るかをバイト単位で指定します。
で、「バイト単位」というのが地味に面倒で、GASの標準機能では文字列から文字列長を得ることはできてもバイト長を得られません。
こういう関数を定義してバイト長を計算すると良い、とGemini(GoogleのAI)が言ってました。

function getByteLength(str) {
  // 文字列をBlobに変換
  var blob = Utilities.newBlob(str);
  // Blobのバイト配列を取得
  var bytes = blob.getBytes();
  // バイト配列の長さを返す
  return bytes.length;
}

どこかのサイトをWebスクレイピングする

GASはWebスクレイピングも標準機能にはないので、ライブラリを使います。
Cheerioというライブラリ(をGASに移植したもの)がおすすめです。
jQueryと互換性のある書き方でスクレイピングできるので扱いやすいです。

【GAS】Cheerioライブラリを使ってWebスクレイピング
↑この記事に色々載っています。

おわり

大体これぐらいあれば、好きにbotが作れると思います。

-プログラミング

執筆者:

関連記事

YouTube Data APIをGoogle Apps Script(GAS)から使おう

YouTubeってAPIから色々な情報を取ることができるんですよ。 APIの情報はリファレンスにまとまってるんですが、APIキーだのOAuth2.0だの、使い始めるまでがまぁまぁ面倒なんですね。 で、 …

国土地理院の地図データをUnityで読みたい(願望)

なんかgoogleのAdSense通ったんで有益な情報載せないとなって。 国土地理院のオープンデータ 国土地理院が公開している(正確には国土地理院のデータを利用して国土交通省国土政策局国土情報課が公開 …

no image

Google Apps Script(GAS)で自宅サーバーの死活監視をする

前置き 自宅サーバー使ってますか? 最近もう流行らないかな、と思ったらRaspberry Piの流行で機器も電気代も安価に組めるようになったりして、地味に持っている人も多いんじゃないかな、と思ってます …

no image

プログラミングとアルゴリズムのはなし

みんなー!小学校でプログラミングの授業がはじまるよー!! プログラミングってなんだろう? プログラミングって、コンピューターに「○○をしなさい」って命令して、なにかの問題を解いたり、ゲームをつくったり …

どうして私はC言語で仕事をしているのか

みなさんプログラミング言語は学んでますか?今から始めますか? 最初に学ぶべきプログラミング言語ってなんだと思いますか?そうです。C言語です。 C#でもC++でもObjective-Cでもなく、Pure …