エラー内容
Exception: Request failed for XXX returned code 401. Truncated server response:
<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>401 Unauthorized</title>
</head>
<body text=#000000 bgcolor... (use muteHttpExceptions option to examine full response)
at myFunction(コード:15:30)
事象
GASでGoogle Cloud Functionの認証情報を取得しようと思った時に、認証情報をつけてリクエストしてるのに何故かエラーでこけていた。
(認証情報の取得周りは下記記事にお世話になりました)
https://qiita.com/kyhei_0727/items/d6b1cb33ce90b99e8129
function myFunction() {
// トリガーURLを指定
var url = "トリガーURL";
// 認証トークンを取得
var idtoken = ScriptApp.getIdentityToken()
// リクエストヘッダを指定
var header = {
Authorization: "Bearer " + idtoken
}
// 関数を実行
var response = UrlFetchApp.fetch(url, {
method: 'POST',
headers:header
});
// HTTPステータスコードを取得
var responseCode = response.getResponseCode();
if (responseCode === 200) {
Logger.log("レスポンス: " + response);
Logger.log("正常終了しました。");
}else{
Logger.log("レスポンス: " + response);
Logger.log("エラーが発生しました。");
}
}
対処法
Google Cloud Functionの対象の関数をデプロイし直す必要があった。
デプロイしないと関数に正しいクライアント ID が設定されないらしい
(記事にも記載されてましたが見落としてました)