GoogleAppsScriptでQiitaの投稿をスプレッドシートに一覧表示する


Googleサイトで作った社内向けサイトに、Qiitaの投稿を一覧表示したいので調べました。

社内向けに情報を発信するためにGoogleサイトを使用しています。最近Qiitaに技術系の情報を公開しているメンバーが増えてきたので、社内のGoogleサイトからまとめて見ることができればいいなと、社内のGoogleサイトにQiitaの投稿を一覧表示できる仕組みを考えていました。

ネットで調べて、どうやらQiitaのAPIとやらを使えば、Qiitaの投稿を取得できそうだったので、挑戦

GoogleサイトのGoogleAppsScript(以降、GAS)で直接一覧を作って表示したかったのですが、GoogleサイトのGASから’UrlFetchApp.fetch’をしようとすると何も返事が来ず・・・
そこで、スプレッドシートのGASで試したらデータを取得できたので記録しておきます。

スプレッドシートにQiitaのデータを取得して表を作成します。そしてGoogleサイトからスプレッドシートにデータを取りに来て表示する仕組みを作ります。

まずはスクリプトを編集します。

ここに以下の内容を書きます。

Qiitaの投稿情報を取得

Spreadsheet(GAS)
function getQiitaData() {
  var user = "user_id" /ユーザーIDを設定 /

  try { 
    var response = UrlFetchApp.fetch('https://qiita.com/api/v2/users/' + user + '/items')
    var json = response.getContentText();
    var jsonData = JSON.parse(json);
    Logger.log(jsonData);
    return jsonData;
  } catch(e){
    / 失敗した時の処理 /
    var error = e;
    Logger.log("message:" + error.message + " qiitaアカウントが間違っていないか確認してください。");
  }
}

これで投稿の情報を全部持って来れるハズ。
getQiitaDataを実行すると、

実行後ログをチェック。

投稿してる情報をGETできましたー

スプレッドシートにデータをセット

あとは、取得したQiitaの投稿をスプレッドシートにセットしていきます。

Spreadsheet(GAS)
function setSpread(){
  / Spreadsheetを指定 /
  var sp_url = "SpreadsheetのURLをコピペ"; 
  var spreadsheet = SpreadsheetApp.openByUrl(sp_url);

  / シート名を指定 /
  var sheet = spreadsheet.getSheetByName("シート名をコピペ");
  sheet.clearContents();

  / getQiitaDataを呼び出してデータ取得 /
  var jsonData = getQiitaData();

  if(jsonData == undefined){
    Logger.log("Qiitaのアカウント確認してください。");
  }else{
    / データ数チェック /
    if(jsonData.length == 0){
      Logger.log("今のところ投稿がありません。");
    }else{
      Logger.log(jsonData.length + "件のデータを取得しました。");
      for(var i=0;i<jsonData.length;i++){
        sheet.getRange(i+1,1).setValue(jsonData[i]["title"]); /投稿のタイトル/
        sheet.getRange(i+1,2).setValue(jsonData[i]["url"]); /投稿先URL/
        sheet.getRange(i+1,3).setValue(jsonData[i]["created_at"].slice(0,10)); /投稿作成日/
      }
    }
  }
}

スプレッドシートに投稿内容(タイトル、URL、作成日)が表示されましたー

次はこの一覧表をGoogleサイトに表示します。
今日はここまで。