2

Google スプレッドシートでいくつかのハッシュタグを検索するために Twitter Stream Api を使用しようとしています。Twitter 検索 API 役に立たないので、リツイート数も追跡したい。ここに私の関数サンプル。うまく機能するために私がしなければならないことを誰か説明してもらえますか..

function miniSearch(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sumSheet = ss.getSheetByName("Readme/Settings");
  // Authorize to Twitter
  var oauthConfig = UrlFetchApp.addOAuthService("twitter");
  oauthConfig.setAccessTokenUrl("https://api.twitter.com/oauth/access_token");
  oauthConfig.setRequestTokenUrl("https://api.twitter.com/oauth/request_token");
  oauthConfig.setAuthorizationUrl("https://api.twitter.com/oauth/authorize");
  oauthConfig.setConsumerKey(TWITTER_CONSUMER_KEY);
  oauthConfig.setConsumerSecret(TWITTER_CONSUMER_SECRET);
  // "twitter" value must match the argument to "addOAuthService" above.
  var options = {
    'method': 'POST',
    "oAuthServiceName" : "twitter",
    "oAuthUseToken" : "always"
  };

  var url = "https://stream.twitter.com/1/statuses/filter.json?track="+"twitterapi";
  var response = UrlFetchApp.fetch(url, options);
  var tweets = JSON.parse(response.getContentText());

  sumSheet.getRange('B8').setValue(tweets[0]["text"]);



}

この関数はエラー コード 504 を返します。

4

1 に答える 1

0

Google Apps Script が永続的な HTTP 接続を開いたままにして、504 になるとは思わない ( Twitter ストリーミング API のドキュメントを参照)

[この Google スプレッドシート テンプレート (TAGS v4.0)に基本的なリツイート カウンターがあります。filterUnique 式はこのコードを使用します (疑似コードは、ツイート テキストからリンクを取り除き、テキストの最初の 90% を抽出し (古いスタイルの RT+ 注釈を考慮するため)、一意の配列にない場合は既存の値に追加または 1 を追加します)。 :

function filterUnique(tweets){
  var output = [];
  var temp = {};
  for (i in tweets){
    if (i>0){
      var tmp = tweets[i][0];
      var urlPattern = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
      tmp = tmp.replace(urlPattern,"")
      tmp = tmp.substring(0,parseInt(tmp.length*0.9));
      if (temp[tmp] == undefined){
        temp[tmp] = [tweets[i][0],0];
      }
      temp[tmp] = [tweets[i][0],temp[tmp][1]+1]; 
    }
  }
  for (i in temp){
    output.push([temp[i][0],temp[i][1]]);
  }
  output.sort(function(a,b) {
    return  b[1]-a[1];
  });
  return output.slice(0, 12);
}

]

于 2012-07-15T11:13:32.237 に答える