Help us understand the problem. What is going on with this article?

みんな大好きGoogle+のプロフィール登録状況をチェックしてみた!

More than 3 years have passed since last update.

【まえがき】

みんな大好きGoogle+のプロフィール登録状況をチェックしてみた。ということで、
Google+を社内展開した時に、
ちゃんとプロフィールの登録が済んでいるかをチェックするために作ってみました。

【めんどくさくてやらなかったこと】

ドメイン内のユーザーの取得をGASで引っこ抜けば常に最新にできたのでは・・・
と思いながらも時間が無かったので、社内のEmailのマスタからコピー・・・

【作成したもの】

★SpreadSheet 1シート

A列:部署名(Emailマスタとともにもってきた)
B列:氏名(Emailマスタとともにもってきた)
C列:Emailアドレス(キー項目として使用)
D列:取得したGoogle+プロフィールURL
E列:取得したGoogle+のユーザーID
F列:取得日時

★GoogleAppsScript 1本

【注意事項】

リソース⇒Googleの拡張サービス
⇒「Google+ Domains API」を有効化してください!

getProfile.gs
function getProfile() {
  var now = new Date();
  var start         = Utilities.formatDate(now, "Asia/Tokyo", "yyyy/MM/dd hh:mm");  
  var today         = Utilities.formatDate(now, "Asia/Tokyo", "yyyy/MM/dd");

  Logger.log("プロフィール取得処理 開始時刻:"+start);
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var SheetValues = sheet.getDataRange().getValues(); //シートのデータを取得
  var LastRow = sheet.getLastRow(); //最後の行番号を取得
  for(var i=2;i<=LastRow;i++) { 
    var end  = new Date();
    var span = end - now;
    if(span < 5*60*1000){ //処理エラーを起こしたくないから             
      var id = SheetValues[i-1][4];
      if(id == "" || id == "プロフィールなし"){        
        var date_check = SheetValues[i-1][5];
        if(date_check !== ""){
          var date_check = Utilities.formatDate(date_check, "Asia/Tokyo", "yyyy/MM/dd")
          }else{
            var date_check = "2014/01/01";
          }
        if(date_check < today ){
          try{        
            var userId = SheetValues[i-1][2];
            var profile = PlusDomains.People.get(userId);
            sheet.getRange(i,4).setValue(profile.url); 
            sheet.getRange(i,5).setValue(profile.id); 
          }catch(e){
            sheet.getRange(i,4).setValue("プロフィールなしor取得できませんでした");       
          }
          sheet.getRange(i,6).setValue(today);
        }
      }
    } else{      
      Logger.log("5分経過したため終了");
      SpreadsheetApp.flush();
      return;
    }
  }
  var end         = Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy/MM/dd hh:mm");   
  Logger.log("終了時刻:"+end);
}

【ポイント】

下記の箇所で、アカウントが無くなった人を飛ばすようにして、エラーを回避
try{
}catch(e){
}

【まとめ】

E列の"プロフィールなし"以外のカウントをどっか別シートにしておけば、
登録者数の推移がとれますよー
⇒さらにグラフにしとけば報告も楽チン

さらにUserIDを使えば、投稿を全部取ってくることもできるし、
さらにさらにとってきた投稿の共有権限をチェックすれば、
外部に誤って共有されてしまっている情報がないかもチェックできます。

そこも作ってあるけど、そこはまた別の機会に…
コメント等で要望があれば・・・

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away