Posted at

BufferのAPI変更(?)によるMicrosoft Flowの対応

先日BufferのAPIが変更(?)されて、Microsoft Flow上から接続をやり直す必要が発生しました。

その頃からか、Twitterに長すぎる文字列を投稿しようとすると、Bufferが「Hmm, it looks like the message is too long for Twitter.」というエラーを返すようになりました。前は向こうで勝手に文字数を切ってくれていたのか、それとも実は昔からこうだったのかは不明です。


Flowでの文字の切り取り

というわけで本題。Microsoft Flowで「文字数が長くなったときは一定文字数まで文字を切り詰める」という処理を実装します。今回は仮に、90文字としました(記事タイトル最大37文字+投稿文最大90文字+省略記号1文字+URL11.5文字という計算)。

切り取りしたい文字列は、事前に変数「投稿文」に格納済みとします。

if(greater(length(variables('投稿文')), 90), concat(take(variables('投稿文'), 90), '…'), variables('投稿文'))

Microsoft Flowには、「文字列を前半からn文字切り取る」というtake関数があるので、それを使います。他のプログラム言語などと違って、>で比較をすることはできず、greaterという関数を使う必要があるので注意。