質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2225閲覧

[GAS,TwitterAPI]定義しているはずなのに未定義とかえされてしまいます。

nattoufugashi

総合スコア2

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2022/01/02 16:59

編集2022/01/04 02:42

前提・実現したいこと

gasで複数のアカウントでそれぞれtweetをするBOTを作っています。
getServiceはうえで定義しているはずなのに未定義とかえされてしまいます。なぜ未定義になってしまうのか教えていただけると幸いです。
ライブラリはOAuth1,TwitterWebServiceを使用しています。いずれも最新バージョンです。

発生している問題・エラーメッセージ

TypeError: Cannot read property 'getService' of undefined postUpdateStatus @ twitter1.gs:58 tweet @ twitter1.gs:66

該当のソースコード

gas

1var consumerKey = ''; 2var consumerSecret = ''; 3 4var accounts = ['nattoufugashi', 'sigafuuto'] 5 6// 認証用インスタンス(複数入れられるように) 7var twitterInstances = {}; 8for (var i in accounts) { 9 var instance = TwitterWebService.getInstance(consumerKey, consumerSecret); 10 // サービス名をアカウント名にしておく 11 var account = accounts[i] 12 13 instance.service_name = account 14 instance.getService = function () { 15 return OAuth1.createService(this.service_name) 16 .setAccessTokenUrl('https://api.twitter.com/oauth/access_token') 17 .setRequestTokenUrl('https://api.twitter.com/oauth/request_token') 18 .setAuthorizationUrl('https://api.twitter.com/oauth/authorize') 19 .setConsumerKey(this.consumer_key) 20 .setConsumerSecret(this.consumer_secret) 21 .setCallbackFunction('authCallback') 22 .setPropertyStore(PropertiesService.getUserProperties()) 23 } 24 25 // 作ったserviceインスタンスを保存しておく 26 twitterInstances[account] = instance 27} 28 29 30// 認証 31function authorize() { 32 for (var key in twitterInstances) { 33 instance = twitterInstances[key] 34 instance.authorize(); 35 } 36} 37 38// 認証解除 39function reset() { 40 for (var key in twitterInstances) { 41 instance = twitterInstances[key] 42 instance.reset(); 43 } 44} 45 46// 認証後のコールバック 47function authCallback(request) { 48 instance = twitterInstances[request.parameter.serviceName] 49 return instance.authCallback(request); 50} 51 52 53// ツイートを投稿 54function postUpdateStatus(index) { 55 var message = 'testing'; 56 instance = twitterInstances[index] 57 var service = instance.getService(); 58 var response = service.fetch('https://api.twitter.com/1.1/statuses/update.json', { 59 method: 'post', 60 payload: { status: message } 61 }); 62} 63 64function tweet(){ 65 postUpdateStatus(0) 66}

補足情報

GASのみを使用して作っています。

こちらのサイトを参考にして作ってみました
https://belltree.life/multi-account-twitter-bot/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

postUpdateStatus を呼び出すときの引数は
アカウント名を指定するのではないでしょうか?

js

1function tweet(){ 2 postUpdateStatus('nattoufugashi') 3}

投稿2022/01/03 00:23

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問