ScrapboxにTwitter共有を実装した話
背景
あ゛ぁ゛〜研究し゛た゛く゛な゛い゛ぃ゛ぃぃぃ〜〜〜
そうだ!ScrapboxにTwitter共有機能を実装しよう。
理想
Twitterのアイコンを画像表示して、そこにTwitterの投稿文URLを挿入すれば楽勝っしょ♪→https://gyazo.com/02dcfc3c8c6d0f224489c7fb511b46f6 https://twitter.com/intent/tweet?text=%E3%81%B2%E3%82%86%E3%81%86%E3%81%AF%E3%81%98%E3%82%81%E3%81%95%E3%82%93%E3%81%AEScrapbox%E3%81%AE%E8%A8%98%E4%BA%8B%E3%82%92%E5%85%B1%E6%9C%89%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%0D%0Ahttps://scrapbox.io/hiyu-hajime/Scrapbox%25E3%2581%25ABTwitter%25E5%2585%25B1%25E6%259C%2589%25E3%2582%2592%25E5%25AE%259F%25E8%25A3%2585%25E3%2581%2597%25E3%2581%259F%25E8%25A9%25B1
基礎知識
Twitterは以下のようにすることで任意の文字列をツイートするURLとなる。
ScrapboxではAlt+Tのショートカットにタイムスタンプ機能がある。デフォルトだと以下のように現在の日時が記述される。
2022/3/17
合体
code:初期.js
scrapbox.TimeStamp.addFormat("YYYY年M月D日h:m");
これに変数として文字列宣言すればいけるいける楽々珍々
code:失敗.js
//ツイート文
var tweet = "ひゆうはじめさんのScrapboxの記事を共有しました。"
//ツイートURL整形
//スタンプされる文の整形
scrapbox.TimeStamp.addFormat(text);
result
記述日:YYYY年M月D日h:mhttps://gyazo.com/02dcfc3c8c6d0f224489c7fb511b46f6 https://twitter.com/intent/tweet?text=%E3%81%B2%E3%82%86%E3%81%86%E3%81%AF%E3%81%98%E3%82%81%E3%81%95%E3%82%93%E3%81%AEScrapbox%E3%81%AE%E8%A8%98%E4%BA%8B%E3%82%92%E5%85%B1%E6%9C%89%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%0D%0Ahttps://scrapbox.io/hiyu-hajime/←記事のURLが正しく入れられていない
ハイガバ、jsを書いているページで変数宣言したら、折角URL取得しても取得されるのはsettingのなんだよなぁ〜
ハイハイ、わかんないことは調べようねぇ〜。ナント!?タイムスタンプの引数に関数を!?
あと、日付も横着せずにjs側で文字列処理してあげようね!!
code:ヨシ.js
scrapbox.TimeStamp.addFormat(()=>{
var now = new Date();
var year = String(now.getFullYear()) + '年';
var month = ('0' + String(now.getMonth() + 1) + '月').slice( -3 );
var day = ('0' + String(now.getDate()) + '日').slice( -3 );
var hour = ('0' + String(now.getHours()) + ':').slice( -3 );
var minute = ('0' + String(now.getMinutes())).slice( -2 );
var tweet = "ひゆうはじめさんのScrapboxの記事を共有しました。"
return "記述日:" + year + month + day + hour + minute;
);
見栄え
Scrapboxくんは記事内の最初の画像をトップページで表示する。
画像のない記事だと、この場合にTwitterアイコンが表示されてなんかヤダ
そうだ、そもそも1枚目の画像をTwitterアイコンにしなければいい
https://gyazo.com/4031bb41108a1756d5556efc02346660
この画像を、見えないくらい縮小して例のタイムスタンプの頭に付けておこう
code:実装ver.js
scrapbox.TimeStamp.addFormat(()=>{
var now = new Date();
var year = String(now.getFullYear()) + '年';
var month = ('0' + String(now.getMonth() + 1) + '月').slice( -3 );
var day = ('0' + String(now.getDate()) + '日').slice( -3 );
var hour = ('0' + String(now.getHours()) + ':').slice( -3 );
var minute = ('0' + String(now.getMinutes())).slice( -2 );
var tweet = "ひゆうはじめさんのScrapboxの記事を共有しました。"
const text = "https://gyazo.com/4031bb41108a1756d5556efc02346660記述日:" + year + month + day + hour + minute + '' + encodeText +''; return "記述日:" + year + month + day + hour + minute;
);
完了
いや〜1時間くらいで終わると思ったら、がっつり1.5時間くらいやっちゃったね。
いい気分転換になりました、研究に戻りま〜す。
お世話になった記事
https://gyazo.com/4031bb41108a1756d5556efc02346660記述日:2022年03月17日06:18https://gyazo.com/0902b55512d817b36596c44228e2d840 https://twitter.com/intent/tweet?text=%E3%81%B2%E3%82%86%E3%81%86%E3%81%AF%E3%81%98%E3%82%81%E3%81%95%E3%82%93%E3%81%AEScrapbox%E3%81%AE%E8%A8%98%E4%BA%8B%E3%82%92%E5%85%B1%E6%9C%89%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%0D%0Ahttps://scrapbox.io/hiyu-hajime/Scrapbox%25E3%2581%25ABTwitter%25E5%2585%25B1%25E6%259C%2589%25E3%2582%2592%25E5%25AE%259F%25E8%25A3%2585%25E3%2581%2597%25E3%2581%259F%25E8%25A9%25B1