僕の世界観を変えてみるスマートフォン用の表示で見る僕の世界観を変えてみる文系男子が趣味でプログラミングを勉強していくブログです。他にも日常で起きたどうでもいいことや愚痴を書いていきたいです。座右の銘は和を以て貴しとなすです。JavaScriptシェアするTwitterGooglePocketLineこの前ツタヤ行った時に犬が座っているフィギュアのガチャガチャ(一回300円)をやったんですよ。犬バージョンと猫バージョンがあったので2回やって、普通の柴犬とロシアンブルーが出たんですね。可愛かったんで彼女にあげるって言ったら、いやまじでいらんって言われてすごく傷つきました。こんばんは、えこです。Botを作っていきたいと思います。APIに登録GASに限らずTwitterの機能を他のプログラムで使用する場合はTwitterAPIに登録し、コンシューマーキーを取得する必要があります。登録には時間がかかるのと、少し苦労するので根気が必要です。(僕の場合は)方法に関しては別の記事を参考にして下さい。www.htmllifehack.xyzライブラリの追加まずGASからツイートを行う為のライブラリを追加します。1つ目はTwitterWebService非公式ですがこのライブラリを使用した方が簡単です。バージョンは2を使用。1rgo8rXsxi1DxI_5Xgo_t3irTw1Y5cxl2mGSkbozKsSXf2E_KBBPC3xTF2つ目はOAuth1OAuthはアカウントに権限を許可する仕組みのことで、"○○にアカウントの利用を許可しますか?"と表示されるあれです。こちらも非公式ですが、この他の認証方法を僕は知らないのでこちらを利用させていただきました。バージョンは最新のものを使用します。2019年7月現在はバージョン16です。1CXDCY5sqT9ph64fFwSzVtXnbjpSfWdRymafDrtIZ7Z_hwysTY7IIhi7sライブラリのバージョン認証してみようまず、GASからTwitterAPIを使えるようにコンシューマーキーを与えます。"**************************");コンシューマーキーはTwitterのDeveloper用サイトで確認することができます。次にGASがTwitterアカウントにアクセスできるようにOAuth認証して権限を与えます。twitter.authCallback(request);}これらの関数は定められているのか関数名を変更するとうまく動作しません。このままコードを実行するとcallbackのエラーが発生します。334、ファイル「Service」、プロジェクト「OAuth1」)なんでも2018年ごろからcallbackのURLを指定しなければAPIの機能が使えなくなったんだとか。DeveloperのサイトでcallbackURLを登録します。callbackURLはhttps://script.google.com/macros/d/*************/usercallbackの*の部分にGASのスクリプトIDを入力します。スクリプトIDはGASのエディタから、ファイル→プロジェクトのプロパティ→スクリプトIDで確認できます。プロパティスクリプトIDあるいは下記のコードを実行するとログにcallbackURLが表示されます。Logger.log(service.getCallbackUrl());}お好きな方でお試しください。以上ができましたら関数authorizeを実行してください。エラーがでなければログに認証用のURLが表示されるはずです。ログとはGASのページの、表示→ログ、のことです。表示されたURLをコピーしそのページに飛ぶとTwitterの認証画面になるので、許可して権限を与えてください。これでGASからTwitterにアクセスできるようになりました。GASからツイートしてみる次はツイート用のコードを書いていきます。Qiitaするとこんな感じでツイートされます。2019年7月23日ちなみにツイートの詳細を見るとGASからツイートされていることがばれちゃいます。Developersを参照ください。ランダムでツイートする次はスプレッドシートにあらかじめ入力しておいた文言をランダムで呟くことにします。スプレッドシートになんでもいいのでツイートしたい文言を入力します。スプレッドシートツイートリストを作ったら次はGASからスプレッドシートを読みにいきます。SpreadsheetApp.openById(ssid).getSheetByName("tweet_list");変数ssidはスプレッドシートIDを入れます。変数shはシートの名前を指定してあげます。次にツイートする文章を取得していきます。tweet_list.push(sh.getRange(3+i,2).getValues());}sh.getRange("b:b").getValues()にするとB列の値全てを取得してしまいます。すると空白のセルも含んでしまうのでfilter(String).length;で文字が入力されているセルの数だけを数えるようにします。今回はB2のtweet_listという項目も含まれて、last_rowには6が入っています。変数tweet_listで空のリストを作りこの中にfor文でツイートの文章を入れていきます。for文の1行目は、0からlast_rowになるまでiの数を増やすという意味です。2行目は、シートの(3,2)の値をtweet_listに入れるという意味です。シートはエクセルと同様、A1やB2という指定の他に(行、列)で指定できます。リストが完成したので次はランダムで文言を取り出していきます。Math.floor(Math.random()*last_row);Math.randomは0〜1未満の数字をランダムで生成します。Math.floorは小数点以下を切り捨て整数で返す関数です。-2*/randomで生成された数字にlast_rowをかけることで整数にしてあげます。0.1が生成された場合、そこにlast_rowの6をかけるので0.6、floorで変換されて00.9が生成された場合、6をかけると5.4、floorで変換されて5、という具合です。このrandomとfloorで生成された数字をリスト番号に充てます。}最後に以上のスクリプトをトリガーに設定してBotの完成です。自動的にツイートするスクリプトの編集画面から、編集→現在のプロジェクトのトリガー、をクリック。画面が変わったら右下にある、+トリガーを追加、ボタンをクリック。ここで実行する関数をtweetに、イベントのソースを選択を時間主導型に変更し、時間の間隔を選択して保存するだけです。トリガーまとめいかがでしたでしょうか。pythonでBotを作る場合はHerokuを使ったりAWSを利用したり、とにかくサーバが必要になってきます。その点GASはGoogleのサーバを利用して行っているため、その辺の心配はいりません。GASについての記事は多くはないので苦労するかもしれませんが、コードを理解するよりもまずやってみたほうがいいですね。今回は文字をツイートだけでしたが実は画像データを投稿するBotも作れるんですよ。次回は画像Botの作り方を記事にしよう!と思ったんですが、noteで販売していってもいいかなって考えています。いうことで今回は以上です。言う...2019-04-06【例文あり】TwitterAPIの登録に苦戦した、そんな話TwitterAPIの登録にとても苦労した話。TwitterAPI自体は2017年...2018-07-25【javascript】勝手に他のページに飛ばされるリダイレクト広告ってこういうこと?Googleを装った偽サイトに飛ばされたというツイートを発見した...2017-09-11tweepyとtwitterAPIでPythonからtwitterを操作してみたTwitterAPIに登録するとTwitterのアプリを作成できます。ヶ月)工場→カフェバイト→質屋の店長→現在SEもどき。2019年10月にバセドウ病と診断される。僕の世界観を変えてみるスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。