請幫忙。我找不到錯誤,我不明白為什么請求不起作用。在我看來,這只是谷歌的 IP 被我請求的網站阻止了。對 JavaScript 的相同請求也有效。
function pleaseWork() {
var myHeaders = {
'contentType': 'application/json',
'Authorization': 'Bearer 5cd4ac65-f71b-3eaa-93af-78610a7aa320',
}
var raw = ["1111111111111"]
var requestOptions = {
'method': 'POST',
'headers': myHeaders,
'payload': JSON.stringify(raw)
};
result = UrlFetchApp.fetch("https://www.ukrposhta.ua/status-tracking/0.0.1/statuses/last", requestOptions)
Logger.log(result)
}
作業 Javascript 請求:
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer 5cd4ac65-f71b-3eaa-93af-78610a7aa320");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify([
"1111111111111"
]);
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
};
fetch("https://www.ukrposhta.ua/status-tracking/0.0.1/statuses/last", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
怎么做才對?
uj5u.com熱心網友回復:
在您的 Google Apps 腳本中,資料默認以表單形式發送。當我看到您的 Javascript 時,似乎需要將資料作為資料發送application/json。因此,您需要按如下方式修改腳本。
從:
var requestOptions = {
'method': 'POST',
'headers': myHeaders,
'payload': JSON.stringify(raw)
};
到:
var requestOptions = {
'method': 'POST',
'headers': myHeaders,
'payload': JSON.stringify(raw),
'contentType': 'application/json',
};
參考:
- 獲取(網址,引數)
筆記:
- 我認為這個修改和你的 Javascript 的請求是一樣的。但是,如果發生錯誤,請
raw再次確認您的值和訪問令牌。
添加1:
您的顯示腳本已被修改以進行測驗。請設定您的訪問令牌和值raw 并再次測驗。
function modified_pleaseWork() {
var myHeaders = { 'Authorization': 'Bearer ###' };
var raw = ["1111111111111"];
var requestOptions = {
'method': 'POST',
'headers': myHeaders,
'payload': JSON.stringify(raw),
'contentType': 'application/json',
};
var result = UrlFetchApp.fetch("https://www.ukrposhta.ua/status-tracking/0.0.1/statuses/last", requestOptions);
Logger.log(result.getContentText())
}
添加2:
從您的以下回復中,
但該解決方案對我不起作用。我看到你添加了一個修改過的腳本。您也可以使用引數“Bearer ###”錯誤 403 進行測驗。但它不在 JavaScript 代碼中。我不明白怎么了?
403我從您的回復中確認了狀態碼。在這種情況下,認為無法從 Google 端直接訪問該站點。參考我認為您的問題的原因是由于這個。
但是,在這種情況下,有一種解決方法。在這里,我想建議使用此解決方法。參考
示例腳本:
在這種情況下,請求在自定義函式上運行。通過這個,我認為狀態碼403可能可以避免。實際上,當我使用您提供的訪問令牌測驗此腳本時,可以獲得結果值。
在此腳本中,使用了自定義函式。因此,請將以下腳本復制并粘貼到 Google 電子表格的容器系結腳本中。并運行main()。這樣,請求就會在自定義函式上運行。并且,可以使用腳本檢索回傳的值。
function modified_pleaseWork() {
var myHeaders = { 'Authorization': 'Bearer 5cd4ac65-f71b-3eaa-93af-78610a7aa320' };
var raw = ["1111111111111"];
var requestOptions = {
'method': 'POST',
'headers': myHeaders,
'payload': JSON.stringify(raw),
'contentType': 'application/json',
};
var result = UrlFetchApp.fetch("https://www.ukrposhta.ua/status-tracking/0.0.1/statuses/last", requestOptions);
return result.getContentText();
}
// Please run this function.
function main() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange("A1");
range.setFormula("=modified_pleaseWork()");
SpreadsheetApp.flush();
const value = range.getValue();
range.clearContent();
console.log(value)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/475637.html
標籤:javascript 谷歌应用脚本 http-status-code-403 网址提取
上一篇:WebScraping需要t2.gstaticURL引數
下一篇:節標題上的Google腳本換行符
