前回の記事で、Github内で稟議書を作るやり方を説明しました。でもGithubだけだと一覧で表示しずらいです。そこで、今回はGoogle Apps Script、いわゆるGASを利用して、承認済みの稟議書一覧を取得して、スプレッドシートに表示していきます。
細かいステップは、後記しますが、まずは最後作り上げる一覧データの表示結果を見ていきます。
【スプレッドシートの表示結果】

表示させるデータについて
A列:連番Number
B列:ファイルのタイトル
では、上記のように表示させるために必要なGASコードをまずお見せします。
function setTitleFromGithub() {
//github_apiで稟議書ファイルを取得。利用するAPIはContents APIで一旦一覧取得
var url = "https://api.github.com/repos/{User_name}/{repository_name}/contents/";
var token = PropertiesService.getScriptProperties().getProperties();
var option = {
method: 'get',
contentType: 'application/json; charset=utf-8',
muteHttpExceptions: true,
"headers": {"Authorization": "token " + token.github_token}
};
// UrlFetchでデータを取得して、JSONデータをパースする
var response = UrlFetchApp.fetch(url,option);
var datas = JSON.parse(response);
// datasをスプレッドシートに入力できるように一次配列にする
var data = [];
for(var i = 0; i < datas.length; i++){
data.push([i,datas[i].path]);
}
//対象となるシートを指定して、データを貼り付ける
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1,1,data.length,data[0].length).setValues(data);
}
コードの詳細説明
まずは、以下のurlを指定する部分から始めます。
var url = "https://api.github.com/repos/{User_name}/{repository_name}/contents/";
今回はcontents APIを利用するので、base urlとなるhttps://api.github.com/にrepos(レポジトリーカテゴリ)のcontentsを利用します。また、{ }でまとめています、User_name/repository_nameについては、読者の肩がgithubで作成した稟議書ファイルが存在するレポを利用します。
{User_name}:Githubの登録ユーザ名
{repository_name}: 稟議書ファイルを格納しているrepositoryの名前
var token = PropertiesService.getScriptProperties().getProperties();
この部分は、GASのpropertyStoreを利用するための部分です。github上で作成したpersonal token(この作成方法は別記事にて説明する予定です)をpropertyStoreに格納して、外から見えない形にします。直接コードの中に書き込むことも当然可能ですが、token情報が誰からでも見えてしまうのはセキュリティ上よろしくありません。なぜよろしくないのかは、いつか説明しますが(tokenを使うと何ができるのか、OAuth上Tokenがどのような役割で盗まれるとどうなるのかetc)、一旦今はセキュリティ上危ないのでpropertyStoreに保存するべきと覚えておいてください。
さて、ではそのPropertyStoreはどのように作成すればいいかを以下に説明していきます。まずは、スクリプト画面から、ファイルタブを開き、一番下の”プロジェクトのプロパティ”をクリックします。

ポップアップで以下の画面が立ち上がってきますので、”スクリプトのプロパティ”タブを選択します。そこで、プロパティと値を入力していきます。
プロパティ:名前なので分かればなんでもいいです。この後、GAS本文で利用するプロパティを宣言する部分でこの名前は利用します。
値:Githubで作成したpersonal tokenの値を入力します。この値は悪用できてしまうので、以下ではマスキングしています。

さて、コード2行説明したところで、少し長くなってきたので、一旦この記事はここまでです。プロパティの使い方を理解しておいていただけると、今後も継続的に利用する内容ですので、いいかと思います。