GASを使ってblueskyで投稿をする方法
表題の通り、GASを使ってblueskyで投稿をする方法の紹介です。
本当はスプレッドシートからランダムに文字列を取得し、それをblueskyにと投稿するようにしたかったのですが、まだ実装できていません。ご存知の方は教えていただけると幸いです。
以下がGASを使ってblueskyで投稿をする方法です。
(このサイトを参考にさせていただきました。)
https://xenexe.info/cf36032c-9c1a-4d17-a85a-83bfa381cb65/
function main() {
const session = createSession(); // セッションを作成して保存
if (session) {
createRecord('テスト', session);
} else {
console.error('Failed to create session');
}
}
// https://www.docs.bsky.app/docs/api/com-atproto-server-create-session
function createSession() {
const url = 'https://bsky.social/xrpc/com.atproto.server.createSession'
const payload = {
identifier: 'ここにアカウントIDを入力',
password: 'ここにパスワードを入力',
}
const options = {
method: 'post',
headers: {
'Content-Type': 'application/json; charset=UTF-8',
},
payload: JSON.stringify(payload),
}
try {
const response = UrlFetchApp.fetch(url, options);
return JSON.parse(response.getContentText());
} catch (error) {
console.error('Error creating session:', error);
return null;
}
}
// https://www.docs.bsky.app/docs/api/com-atproto-repo-create-record
function createRecord(msg, session) {
if (!session || !session.handle || !session.accessJwt) {
console.error('Invalid session');
return;
}
const url = 'https://bsky.social/xrpc/com.atproto.repo.createRecord'
const payload = {
repo: session.handle, // セッションからハンドルを取得
collection: 'app.bsky.feed.post',
record: {
text: msg,
createdAt: new Date().toISOString(),
},
}
const options = {
method: 'post',
headers: {
'Content-Type': 'application/json',
Authorization: 'Bearer ' + session.accessJwt, // セッションからアクセストークンを取得
},
payload: JSON.stringify(payload),
}
try {
UrlFetchApp.fetch(url, options);
} catch (error) {
console.error('Error creating record:', error.message); // エラーメッセージをログに出力
}
}
この記事が気に入ったらサポートをしてみませんか?