プログラミング

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が作れると思います。

-プログラミング

執筆者:

関連記事

no image

“API”をなるべく分かりやすく説明してみる

“API”という言葉が一般にもよく使われ始めています。 しかし、非エンジニアにとっては馴染みのない言葉で、しかも謎の英略語なので、一部の人々からは「APIがなくなった」(=AP …

GeoJSONで市町村境界をマージして都道府県境界にしたい(その2)

GeoJSONのPolygonをマージしたい第2回です。 前回、純粋な多角形の統合ではなくて、領域が被らない多角形の統合になるのでグラフ問題として解くことができるという説明をしました。 今回はどうやっ …

no image

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

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

【Unity】GPUを使ってパンツを隠すスクリプトができた

かわいいスカートを履きたい!でもパンチラしたくない! それは誰もが抱く夢です。もちろん、3Dモデルだってパンチラしたくないと思っているハズです。 というわけで偉大なる先人がいます。 Unityでパンツ …

no image

例え話をしないC言語のポインタの説明

もくじ まえおき 巷では「プログラマーになりたい人に初学者にとって、ポインタという考え方がわけわかめ」という話がよくあります。 そこでいろいろな人が「ポインタは住所だ」とか「変数がハコで」とか手を変え …