この記事の読者
- Google Workspaceを使用してInstagramに投稿したい方
- Instagramをビジネスアカウントを利用して自動運用を行いたい方
- この記事を楽しく読める人
きっかけ
自分の運営している団体でInstagramのアカウントを全員にログインさせるのはセキュリティ的にも怖かったので、Google Form経由でアップロードさせる方法に変更
前提条件
- 投稿する写真をGoogle Driveに保存しており、また、公開アクセスになっていること
- Instagramをビジネスアカウントで運用していること
結論
公式リファレスンス通りにUrlfetchApp.fetch()
でPOSTを実行
詳細
-
以下のリンク先の通りにInstagram Graph APIのユーザーIDとトークンを取得する。なお、バージョンは最新のもので良い
https://to-inc.co.jp/socialbook/?p=2189 -
写真のリンクを準備する。ドライブのリンクは
https://drive.google.com/uc?id="ファイルのID"
の形にする。詳しくは以下のリンクを参照。
https://qiita.com/rot-z/items/299ac40361690c51ce1d -
以下のコードを記述。公式リファレンス通りに2回のPOSTを実行する。
https://developers.facebook.com/docs/instagram-api/guides/content-publishing
main.gs
function postOnInstagram(POST_LINK, POST_CAPTION) {
//Configure ID and TOKEN. It is set on properties.
const INSTAGRAM_ID = PropertiesService.getScriptProperties().getProperty("INSTAGRAM_ID");
const INSTAGRAM_TOKEN = PropertiesService.getScriptProperties().getProperty("INSTAGRAM_TOKEN");
//First Post
let image_url = POST_LINK;
let caption = POST_CAPTION;
let payload1 = {
'access_token': INSTAGRAM_TOKEN,
'image_url': image_url,
'caption': caption,
};
let options1 = {
'method': 'post',
'payload': payload1
};
const response1 = UrlFetchApp.fetch("https://graph.facebook.com/v16.0/" + INSTAGRAM_ID + "/media", options1);
//Secound Post
let id = JSON.parse(response1).id;
let payload2 = {
'access_token': INSTAGRAM_TOKEN,
'creation_id': id,
};
let options2 = {
'method': 'post',
'payload': payload2
};
const response2 = UrlFetchApp.fetch("https://graph.facebook.com/v16.0/" + INSTAGRAM_ID + "/media_publish", options2);
};
let post_caption = ""; //投稿の本文を記入
let post_link = ""; //投稿する写真のリンクを
postOnInstagram(post_link,post_caption)
利点
Google Workspaceを利用しているユーザーにはとても利便性が高い。
改善すべきポイント
- Google Driveのファイルのアクセス権を一時的に公開にする必要がある
- 複数の写真とビデオの投稿に対応していない。(今後対応させる予定)
その他
- 後ほどライブラリを公開予定
- GitHubにソースコードを公開予定
筆者の戯言
これでだいぶ無駄業務が減ったのでよし。