プログラミング

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

-プログラミング

執筆者:

関連記事

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 …

no image

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

もくじ1 前置き2 概要3 できあがり3.1 GAS側3.2 自宅サーバー側4 解説5 蛇足1 ログを取る6 蛇足2 サーバーをタイマ起動させて監視 前置き 自宅サーバー使ってますか? 最近もう流行ら …

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

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

no image

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

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

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

なんかgoogleのAdSense通ったんで有益な情報載せないとなって。 もくじ1 国土地理院のオープンデータ2 GeoJsonを読み込もう3 Unityで処理しよう3.1 JsonUtilityの挫 …