libro
www.tuyano.com
Google Apps Scriptプログラミング [中級編]

Google+にアクセスする (5/6)

作成:2014-04-26 09:14
更新:2014-04-26 09:14

■PageTokenで続きの投稿を得る

投稿リストを取得する場合、「どこまで取り出すか」を考えないといけません。長くGoogle+をやっていれば、下手をすると数千~数万の投稿をしているかも知れませんからね。

そこで、普通は「まず10個取り出しておき、必要に応じてそこから更に10個取り出す」といった具合に、「最後に取り出したところから更に前のものを取り出していく」という形で対応をしていくことになります。

こうした処理に重要となるのが「ページトークン」というものです。先にPlusDomains.Activities.listの説明をしたとき、オプション設定として「pageToken」という項目が用意されていました。これが「ページの区切り」を示すページトークンです。これに区切りとなる「なにか」を設定しておくと、リストを取得する際、その区切りから先(つまりもっと前のもの)の投稿を取り出すようになります。

では、このpageTokenに設定する値は何を用意するのか。それはlistで取得されるActivityFeedにある「nextPageToken」プロパティの値です。これは、listで取得したリストの次のページを示すページトークンです。これをpageTokenに渡すことで、その続きからリストを取得します。

このnextPageTokenは、最後まで投稿を取得し次のページがない場合、nullになります。注意したいのは、PlusDomains.Activities.listを実行するとき、pageTokennullだと最初からリストを取得する、という点でしょう。ですから、ページトークンを利用して続きのページを取得する場合、「nextPageTokennullでなければ次ページを取得する」というように処理しておく必要があります。

下に、実際の利用例を挙げておきましょう。ここでは10ずつ投稿を取得して表示する作業を10回繰り返し、最大100個前までの投稿をログに出力しています。各ページごとに「access 数字」という形でページ数を表示しているので、どのページのどの投稿があるかわかるでしょう。実際の投稿と比べてみましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

function getposts() {
  var token;
  var counter = 1;
  for(var h = 0;h < 10;h++){
    var posts = PlusDomains.Activities.list('115922433044736789610', 'user', {
      maxResults: 10,
      pageToken: token
    });
    if (posts.items){
      token = posts.nextPageToken;
      if (token == null) break;
      Logger.log('access ' + counter++);
      for(var i = 0;i < posts.items.length;i++){
        var item = posts.items[i];
        Logger.log('POST:' + item.title);
        Logger.log(item.object.content);
        var cmts = PlusDomains.Comments.list(item.id);
        for(var j = 0;j < cmts.items.length;j++){
          Logger.log('comment:' + cmts.items[j].object.content);
        }
      }
    }
  }
}
※関連コンテンツ

「Google Apps Scriptプログラミング [中級編]」に戻る