やりたいこと
- gasからGithub GraphQL API v4を叩きたい
- GraphQLをどうやってリクエストにのせればよいのかわからない
- わかった!
どうやったか
実際に動かしているのはこれです(typescriptで書いてます)
https://github.com/abeyuya/gas-slack-bot-aoba/blob/master/src/lib/github.ts
以下に関係する箇所を抜粋しておきます
const accessToken = process.env.GITHUB_ACCESS_TOKEN || "";
const endpoint = "https://api.github.com/graphql";
const graphql = `
{
user(login: "abeyuya") {
organizations(last: 5) {
nodes {
name
url
repositories(last:100) {
nodes {
name
url
pullRequests(last:30 states:[OPEN] ) {
nodes {
url
title
reviewRequests(last:10) {
nodes {
requestedReviewer {
... on User {
url
}
}
}
}
}
}
}
}
}
}
}
}
`;
const buildRequestOption = (graphql: string) => {
return {
method: "post",
contentType: "application/json",
headers: {
Authorization: `bearer ${accessToken}`,
},
payload: JSON.stringify({ query: graphql }),
};
};
export const getAssignedPullRequests = () => {
const option = buildRequestOption(graphql);
const res = UrlFetchApp.fetch(endpoint, option);
const json = JSON.parse(res.getContentText());
return json;
};
graphql自体は こちら のexplorerで試行錯誤して書いて、その結果をコピペしてきました