個人的にSNSにはあまり興味がない。でも仕事でしかたなく投稿しないといけないのだが、ハッシュタグをたくさん入れるのがとてもウザい。たくさん付いてるのを見るだけでもウザいのに、それを自分でチマチマ打つなんてもう死にそうなくらいウザい。そこでできるだけストレスを減らすべく、ハッシュタグのカタマリをサクッと作れる方法はないかと考える。。
投稿先は複数で少しずつ内容を変えて投稿するので、うちの職場では一旦チャットワークに原文を落としてそこから各SNSへコピペしていく形をとっている。
最初はユーザー辞書にハッシュタグを登録して使ってたんだけど、これも選択肢が数多くあると探すのが面倒。で最初は次のようにしてみた。
- スプレッドシートによく使うハッシュタグをチェックボックスと並べてリストアップ
- Query関数で空いてる場所にチェックボックスがtrueな項目を集める
- それをTEXTJOINで半角空白で区切って繋げる
- 本文を書く欄も設けて、一緒にチャットワークへ送る
しかしこれはハッシュタグ群を作るのにはいいが、長めの文章を改行入れてセル内に書いていくのが結構やりづらい。改行しようとしてつい何度もセル移動してしまう。これもストレス。
そこでGoogleフォームを使い、ハッシュタグをチェックボックスでリストアップ、投稿内容に合うものだけ選択して送信したら直接チャットワークへ投稿されるシステムを考えた。
function form(e) {
let contents = e.namedValues['SNS本文'];
let hashtag = e.namedValues['ハッシュタグ'];
let hashtag2 = e.namedValues['追加ハッシュタグ'];//選択肢にないタグを追加するため
hashtag = hashtag.map(value => value.replace(/,/g,''));//カンマを消す
let cw = ChatWorkClient.factory({token:'トークン'});//投稿先アカウントのトークン
let body = contents +'\n\n' + hashtag + ' ' + hashtag2; //追加ハッシュタグとの間に半角空白を挿入
cw.sendMessageToMyChat(body);
}
コード短い。
フォームの送信を受け取るスプレッドシートにコンテナバインドのスクリプトで上記を書き(スタンドアロンでもいいかもしれないけど、GASのアップデート後うまくいかないことがあったのでできるだけコンテナバインドにしてる)、トリガー設定:ソースの受け取りをスプレッドシートから、イベントの種類をフォーム送信時。
フォームのチェックボックスで入力された選択肢はカンマで区切られているので、それをreplaceで消去。ツイッターのハッシュタグが間に半角空白を挟まないと判読されないので、それが入るようにしている。
実際にはそのまま各SNS投稿画面に貼れるように定型文やURLなども追加、整形して送られるようにしている。スマホ画面での整形やコピペなどを極力しなくていいように。
もちろんHotSuiteなどのSNS管理システムやIFTTTなんかも検討したけど、投稿内容をいちいち変えての投稿なので難しかった。それに外部サービスを使うとまた何かと変更があった時に動かなくなってしまうし、その管理もしなきゃいけなくなるし。
フォームは誰にでも分かりやすくて文章の入力もしやすいし、各自の使い慣れたスマホからでも投稿できるので便利。なによりレイアウトや数式を消される事故がないのがいい( ´▽`)
ただ、セキュリティ的にどうなのだろう。トリガーを設置したのもスプレッドシートもオーナーは自分だが、チャットワークのアカウントは自分のではない(職場の)。GASの承認確認が入らないまま簡単にチャットワークへ投稿された。フォームはそもそも不特定多数が送信するものだからそれでいいのかな。