Skip to content

Instantly share code, notes, and snippets.

@harunonsystem
Created March 7, 2021 00:53
Show Gist options
  • Save harunonsystem/a84164b8535f09dcf4662d38b63c18a9 to your computer and use it in GitHub Desktop.
Save harunonsystem/a84164b8535f09dcf4662d38b63c18a9 to your computer and use it in GitHub Desktop.
var CONSUMER_KEY ="";
var CONSUMER_SECRET = "";
// 認証用URL取得
function getOAuthURL() {
Logger.log(getService().authorize());
}
// サービス取得
function getService() {
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(PropertiesService.getScriptProperties().getProperty("CONSUMER_KEY"))
.setConsumerSecret(PropertiesService.getScriptProperties().getProperty("CONSUMER_SECRET"))
.setCallbackFunction('authCallback')
// 認証情報をプロパティストアにセット(これにより認証解除するまで再認証が不要になる)
.setPropertyStore(PropertiesService.getUserProperties());
}
// 認証成功時に呼び出される処理を定義
function authCallback(request) {
var service = getService();
var authorized = service.handleCallback(request);
if (authorized) {
return HtmlService.createHtmlOutput('success!!');
} else {
return HtmlService.createHtmlOutput('failed');
}
}
function apitest() {
var key = "";
var secret = "";
var base64_token = Utilities.base64Encode( key + ':' + secret );
var response1 = UrlFetchApp.fetch(
'https://api.twitter.com/oauth2/token',
{
'method': 'POST',
'contentType': 'application/x-www-form-urlencoded;charset=UTF-8',
'headers': {
'Authorization': 'Basic ' + base64_token
},
'payload': {
'grant_type': 'client_credentials'
}
}
);
var bearerTokens = JSON.parse( response1.getContentText() );
// *********************アカウントのID入れる(@なしのやつ)********************************
var screenName = ""
// スプレッドシートへの書き込み準備
// *************************シートの名前を入れる*****************************************
var range= SpreadsheetApp.getActiveSpreadsheet().getSheetByName("").getRange(1,1);
// スプレッドのクリア
range.offset(1, 0, 1000, 5).clear();
// 次ページ取得用カーソル
var nextCursor = "-1";
// API呼び出し最大10回(MAX1,000件)で強制終了
for(var page=1; page<=5; page++)
{
var url = "https://api.twitter.com/1.1/followers/list.json"+"?cursor=" + nextCursor +"&screen_name=" +screenName +"&count=200" ;
// TwitterからFriendsの情報を取得
var response = UrlFetchApp.fetch(url, { 'headers': { 'Authorization': 'Bearer ' + bearerTokens.access_token } });
// var resObj = Utilities.jsonParse(response.getContentText());
var resObj = JSON.parse(response.getContentText());
var users = resObj["users"];
nextCursor = resObj["next_cursor_str"];
Logger.log(nextCursor);
for(var i=0; i<users.length; i++) {
var anStatus = users[i];
var inscreenName = anStatus["screen_name"];
var name = anStatus["name"];
var rownum = i+1+(200*(page-1));
range.offset(rownum, 0).setValue(inscreenName);
range.offset(rownum, 1).setValue(name);
range.offset(rownum, 2).setValue("https://twitter.com/" + inscreenName);
range.offset(rownum, 3).setValue(nextCursor);
range.offset(rownum, 4).setValue(rownum);
range.offset(rownum, 5).setValue(page);
Logger.log(rownum)
}
if(nextCursor === "0")
{
Logger.log(page);
break;
}
Utilities.sleep(30000);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment