LANG SELRCT

Apps Script Reference  (Create: Create new Spreadsheet | Create new Apps Script

Saturday, October 10, 2020

GitHubのGraphQL API を試してみる(Explorerと同じqueryをコードでやる)


MISSION 
GitHubのGraphQL APIでExplorerのデフォルトqueryをApps Scriptでやる


Explorer
https://docs.github.com/en/free-pro-team@latest/graphql/overview/explorer

この

query { 
  viewer { 
    login
  }
}

をGoogle Apps Scriptでやってみたくて書きました。



PROCESS 
personal access tokenを発行する
スクリプトのプロパティに保存する
コードを書いて保存する
コードを実行する
ログを確認する


STEPS 

STEP1:personal access tokenを発行する

の手順でアクセストークンを取得します。



STEP2:スクリプトのプロパティに保存する

スクリプトエディタ > ファイル > プロジェクトのプロパティ を開いて


「行を追加」をクリックして
プロパティをaccess_tokenとして
値にはSTEP1で取得したパーソナルアクセストークンを入れて保存します。




STEP3:コードを書いて保存する

以下のコード.gsをそのままコピペすれば実行できるはず。


コード.gs 
const endpoint = "https://api.github.com/graphql";

/************************************
APIをたたいてログに出す
************************************/
function runGraphql() {
  const response = getResponse();
  Logger.log(response);
}

/************************************
APIを実行して結果を返す
************************************/
function getResponse() {
  return UrlFetchApp.fetch(endpoint, getOptions());
}

/************************************
getOptions
************************************/
function getOptions() {
  return {
    "method": "post",
    "contentType": "application/json",
    "headers": {
      "Authorization": "bearer " + getProp("access_token"),
    },
    "payload": JSON.stringify({ "query": getQuery() })
  };
}

/************************************
クエリ
************************************/
function getQuery() {
  return `{ 
    viewer { 
      login
    }
  }`
}

/************************************
スクリプトのプロパティにアクセスする
************************************/
function getProp(key) {
  return PropertiesService.getScriptProperties().getProperty(key);
}


コメント入れると48行ありますが、実質30行くらいです。
getQueryの中身を変えると指定したデータにアクセスできます。
ここではデフォルトの
  viewer { 
    login
  }
にしています。



STEP4:コードを実行する

実行 > runGraphql で実行します。


初回実行時は以下のような許可を求められます。

許可を確認


アカウントを選択


詳細


〜(安全ではないページ)に移動


許可



STEP5:ログを確認する

表示 > ログ


ログに結果が表示されます。


これでExplorer実行時、右に表示される結果と同じ結果をコードで取得できました。



Latest post

スプレッドシートA列にある複数のテキストをスライドに追加したい(Google Apps Script)

今回Google Apps Scriptでやりたいこと GoogleスプレッドシートA列にある複数の値を取得して Googleスライドに渡して 図形オブジェクトのテキストとして追加したい ① スプレッドシートのA列に値を入れておく ② Code.gsのinsertNewShape...