GAS TypeError: Cannot read properties of undefined (reading 'parameter')の解決方法

実現したいこと

GoogleスプレッドシートからX(旧Twitter)にbot投稿する

発生している問題・分からないこと

GAS(Google Apps Script)でOAuthの認証を設定し、コールバック関数を使用しています。しかし、認証中に「Cannot read properties of undefined」エラーが発生しており、原因がわかりません。

エラーメッセージ

error

113:48:34 エラー 2TypeError: Cannot read properties of undefined (reading 'parameter') 3Service_.handleCallback @ Service.gs:265 4authCallback @ コード.gs:59

該当のソースコード

※「*********」となっているところは、実際には正しい文字列を入力の上実行しています。 function getScriptId() { const scriptId = ScriptApp.getScriptId(); console.log(`スクリプトID: ${scriptId}`); //スクリプトID: ********* console.log(`コールバックURL: https://script.google.com/macros/d/${scriptId}/usercallback`); //コールバックURL: https://script.google.com/macros/d/********/usercallback } const CONSUMER_API_KEY ="xxxxxxxxxx"; const CONSUMER_API_SECRET = "xxxxxxxxxx"; const ACCESS_TOKEN = "xxxxxxxxxx"; const ACCESS_TOKEN_SECRET = "xxxxxxxxxx"; function main() { const authorizationUrl = "https://api.twitter.com/oauth/authorize?oauth_token=YOUR_REQUEST_TOKEN"; Logger.log('Open the following URL and authorize the app: %s', authorizationUrl); } // OAuth1認証 const getTwitterService = function() { return OAuth1.createService( "Twitter" ) .setAccessTokenUrl( "https://api.twitter.com/oauth/access_token" ) .setRequestTokenUrl( "https://api.twitter.com/oauth/request_token" ) .setAuthorizationUrl( "https://api.twitter.com/oauth/authorize" ) .setConsumerKey( CONSUMER_API_KEY ) .setConsumerSecret( CONSUMER_API_SECRET ) .setAccessToken( ACCESS_TOKEN, ACCESS_TOKEN_SECRET ) .setCallbackFunction('authCallback'); // コールバック関数名 } function getService() { const CONSUMER_API_KEY = "**********"; const CONSUMER_API_SECRET = "**********"; const service = OAuth1.createService('Twitter') .setAccessTokenUrl('https://api.twitter.com/oauth/access_token') .setRequestTokenUrl('https://api.twitter.com/oauth/request_token') .setAuthorizationUrl('https://api.twitter.com/oauth/authorize') .setConsumerKey(CONSUMER_API_KEY) .setConsumerSecret(CONSUMER_API_SECRET) .setCallbackFunction('authCallback') .setPropertyStore(PropertiesService.getUserProperties()); Logger.log("OAuth service:", service); // OAuth サービスの設定をログに出力して確認 return service; } // OAuthコールバック function authCallback(request) { Logger.log("request:", request); // リクエストをログに出力して確認 const service = getTwitterService(); const authorized = service.handleCallback(request); if (authorized) { return HtmlService.createHtmlOutput('Success!'); } else { return HtmlService.createHtmlOutput('Denied.'); } }

試したこと・調べたこと

上記の詳細・結果

Google等で検索、ChatGPTでコードを変更しましたが、解決できませんでした。

補足

特になし

コメントを投稿

0 コメント