GASで外部APIリクエスト時にエラー発生("No token provided.")
Q&A
Closed
解決したいこと
GASでShip&Co APIを叩き、送り状ラベルを発行出来るようにしたいのですが、APIリクエストをする際に認可エラーが発生してしまうため、当該エラーを解消し、APIレスポンスを取得したい。
【Ship&Co API ドキュメンテーション】
https://developer.shipandco.com/#t-overview_10
【Postman サンプルコード】
https://documenter.getpostman.com/view/3269571/SW14TvyF#d4c2acd3-6025-4bc1-8608-2d4931e4c0ab
発生している問題・エラー
{"auth":false,"message":"No token provided."}
該当するソースコード
function shipandcoAPI(){
var data = {
"to_address": {
"full_name": "John Doe",
"company": "",
"email": "",
"phone": "0901231234",
"country": "FR",
"zip": "75002",
"province": "",
"city": "Paris",
"address1": "12 Rue du 4 Septembre",
"address2": ""
},
"from_address": {
"full_name": "Yamada Taro",
"company": "World Company",
"email": "ytaro@worldcompany.com",
"phone": "08012341234",
"country": "JP",
"zip": "6050012",
"province": "KYOTO",
"city": "KYOTO SHI",
"address1": "HIGASHIYAMA KU",
"address2": "SAIKAISHICHO"
},
"products": [
{
"name": "T-Shirt",
"quantity": 2,
"price": 2980,
"hs_code": "1234.12",
"origin_country": "JP"
}
],
"parcels": [
{
"weight": 2000,
"amount": 1,
"width": 10,
"height": 10,
"depth": 10
}
],
"customs": {
"duty_paid": false,
"content_type": "MERCHANDISE"
},
"setup": {
"carrier": "japanpost",
"service": "japanpost_ems",
"currency": "JPY",
"insurance": 0,
"ref_number": "123-REF-3456",
"delivery_note": "Leave the box at the door",
"discount": 0,
"signature": false,
"return_label": false
}
};
var credential = 'ここにAPI Tokenを入れております';
var myheaders = {
'Authorization': 'Bearer '+ credential
};
var options = {
'headers': myheaders,
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(data),
muteHttpExceptions: true,
};
var response = UrlFetchApp.fetch("https://app.shipandco.com/api/v1/shipments", options);
Logger.log(response)
}
自分で試したこと
PostmanにJavascript-Fetchのサンプルコードがあったのですが、GASで同様の処理をする記述方法が分からず、GASで外部APIを叩く際に使用されるサンプルコードを読み漁り、記載のソースコードに辿り着いております。
↓PostmanのJavascript-fetchサンプルコード↓
var myHeaders = new Headers();
myHeaders.append("x-access-token", "YOUR_API_TOKEN_FROM_DASHBOARD");
myHeaders.append("content-type", "application/json");
0 likes