前提・実現したいこと
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/
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。