7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-10-31

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

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

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

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

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

まずはスクリプトを編集します。
エディタ.png

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

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を実行すると、
実行.png

実行後ログをチェック。
ログ.png

スクリーンショット 2017-10-31 14.20.04.png

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

#スプレッドシートにデータをセット
あとは、取得した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、作成日)が表示されましたー:clap:
スクリーンショット 2017-11-01 9.13.34.png

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

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?