プログラミング

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

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

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

no image

ランダムな日本人データを生成するツールをつくった

もくじ1 前置き2 完成!3 用いたデータについて4 中で何をしているのか4.1 基本アイデア4.2 累積確率の計算4.3 高速化の工夫5 おわりに 前置き ダミーの名簿データが作りたい、という需要は …

no image

C言語のポインタに関する補足説明

前回、C言語のポインタに関する解説記事を書きまして、そこそこの反響を貰うとともにいくつかの指摘を受けました。 前回の記事では幾つか「ウソではないけど真実と違う」記述がありまして、その点を補足としていく …

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

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

SHOWROOMのガチイベをGoogleスプレッドシートでグラフにしよう

もくじ1 まえがき2 みほん3 だいじな注意事項3.1 Google Apps Scriptの制限3.2 SHOWROOMの仕様4 てじゅん4.0.1 1.4.0.2 2.4.0.3 3.4.0.4 …