Class UrlFetchApp

UrlFetchApp

透過網際網路擷取資源,並與其他主機通訊。

這項服務可讓指令碼與其他應用程式通訊,或存取其他資源 從網路上擷取網址指令碼可以使用網址擷取服務發出 HTTP 和 HTTPS 以及接收回應「網址擷取」服務會使用 Google 的網路基礎架構 提升效率和資源調度目的

使用這項服務發出的要求是來自一組 IP 範圍。如有下列情形,您可以查看 IP 位址的完整清單。 您必須核准或核准這些要求。

這項服務需要https://www.googleapis.com/auth/script.external_request 範圍。在大多數情況下,Apps Script 會自動偵測並納入指令碼所需的範圍, 但如果您要設定範圍 明確,您必須手動新增此範圍,才能使用 UrlFetchApp

另請參閱

方法

方法傳回類型簡短說明
fetch(url)HTTPResponse發出擷取網址的要求。
fetch(url, params)HTTPResponse透過選用的進階參數發出擷取網址的要求。
fetchAll(requests)HTTPResponse[]使用選用的進階參數,提出多個網址擷取要求。
getRequest(url)Object傳回叫用作業時發出的要求。
getRequest(url, params)Object傳回叫用作業時發出的要求。

內容詳盡的說明文件

fetch(url)

發出擷取網址的要求。

這適用於 HTTP 和 HTTPS。

// The code below logs the HTML code of the Google home page.
var response = UrlFetchApp.fetch("http://www.google.com/");
Logger.log(response.getContentText());

參數

名稱類型說明
urlString要擷取的網址。網址的長度上限為 2,082 個字元。

回攻員

HTTPResponse:HTTP 回應資料。

授權

使用這個方法的指令碼需要下列一或多個範圍的授權:

  • https://www.googleapis.com/auth/script.external_request

fetch(url, params)

透過選用的進階參數發出擷取網址的要求。

這適用於 HTTP 和 HTTPS。

// Make a GET request and log the returned content.
var response = UrlFetchApp.fetch('http://www.google.com/');
Logger.log(response.getContentText());
// Make a POST request with form data.
var resumeBlob = Utilities.newBlob('Hire me!', 'text/plain', 'resume.txt');
var formData = {
  'name': 'Bob Smith',
  'email': 'bob@example.com',
  'resume': resumeBlob
};
// Because payload is a JavaScript object, it is interpreted as
// as form data. (No need to specify contentType; it automatically
// defaults to either 'application/x-www-form-urlencoded'
// or 'multipart/form-data')
var options = {
  'method' : 'post',
  'payload' : formData
};
UrlFetchApp.fetch('https://httpbin.org/post', options);
// Make a POST request with a JSON payload.
var data = {
  'name': 'Bob Smith',
  'age': 35,
  'pets': ['fido', 'fluffy']
};
var options = {
  'method' : 'post',
  'contentType': 'application/json',
  // Convert the JavaScript object to a JSON string.
  'payload' : JSON.stringify(data)
};
UrlFetchApp.fetch('https://httpbin.org/post', options);

參數

名稱類型說明
urlString要擷取的網址。網址的長度上限為 2,082 個字元。
paramsObject選用的 JavaScript 物件,用於指定下方定義的進階參數。

進階參數

名稱類型說明
contentTypeString內容類型 (預設為 'application/x-www-form-urlencoded').另一個內容類型範例為「application/xml」 charset=utf-8'。
headersObject請求中 HTTP 標頭的 JavaScript 鍵/值對應
methodString要求的 HTTP 方法:getdeletepatchpostput。預設為 get
payloadString酬載 (也就是 POST 主體) 的要求。特定 HTTP 方法 (例如 GET) 不接受酬載。可以是字串、位元組陣列 blob 或 JavaScript 物件系統會將 JavaScript 物件解讀為表單欄位的對應 對應至值,其中值可以是字串或 blob。
useIntranetBoolean已淘汰,這用於指示擷取作業來解析指定的 連結至您網域的內部網路中的網址,使用 (已淘汰) SDC
validateHttpsCertificatesBoolean如果 false 擷取任何值,則擷取作業忽略 HTTPS 要求的憑證無效。預設值為 true
followRedirectsBoolean如果 false 沒有自動擷取 追蹤 HTTP 重新導向它會傳回原始 HTTP 回應預設值為 true
muteHttpExceptionsBoolean如果 true 擷取作業未擲回 例外狀況,並改為傳回 HTTPResponse。預設值為 false
escapingBoolean如果網址中的 false 保留字元不是 逸出。預設值為 true

回攻員

HTTPResponse:HTTP 回應資料。

授權

使用這個方法的指令碼需要下列一或多個範圍的授權:

  • https://www.googleapis.com/auth/script.external_request

fetchAll(requests)

使用選用的進階參數,提出多個網址擷取要求。

這適用於 HTTP 和 HTTPS。

// Make both a POST request with form data, and a GET request.
var resumeBlob = Utilities.newBlob('Hire me!', 'text/plain', 'resume.txt');
var formData = {
  'name': 'Bob Smith',
  'email': 'bob@example.com',
  'resume': resumeBlob
};
// Because payload is a JavaScript object, it is interpreted as
// as form data. (No need to specify contentType; it defaults to either
// 'application/x-www-form-urlencoded' or 'multipart/form-data')
var request1 = {
  'url': 'https://httpbin.org/post',
  'method' : 'post',
  'payload' : formData
};
// A request may also just be a URL.
var request2 = 'https://httpbin.org/get?key=value';
UrlFetchApp.fetchAll([request1, request2]);

參數

名稱類型說明
requestsObject[]網址或 JavaScript 物件的陣列,按定義的定義提出要求 。

進階參數

名稱類型說明
urlString要擷取的網址網址的長度上限為 2,082 個字元。
contentTypeString內容類型 (預設為 'application/x-www-form-urlencoded').另一個內容類型範例為「application/xml」 charset=utf-8'。
headersObject請求中 HTTP 標頭的 JavaScript 鍵/值對應
methodString要求的 HTTP 方法:getdeletepatchpostput。預設為 get
payloadString酬載 (也就是 POST 主體) 的要求。特定 HTTP 方法 (例如 GET) 不接受酬載。可以是字串、位元組陣列 blob 或 JavaScript 物件系統會將 JavaScript 物件解讀為表單欄位的對應 對應至值,其中值可以是字串或 blob。
useIntranetBoolean已淘汰,這用於指示擷取作業來解析指定的 連結至您網域的內部網路中的網址,使用 (已淘汰) SDC
validateHttpsCertificatesBoolean如果 false 擷取任何值,則擷取作業忽略 HTTPS 要求的憑證無效。預設值為 true
followRedirectsBoolean如果 false 沒有自動擷取 追蹤 HTTP 重新導向它會傳回原始 HTTP 回應預設值為 true
muteHttpExceptionsBoolean如果為 true,擷取作業不會擲回 例外狀況,並改為傳回 HTTPResponse。預設值為 false
escapingBoolean如果是 false,就表示網址中的保留字元不是 逸出。預設值為 true

回攻員

HTTPResponse[] — 每個輸入要求的 HTTP 回應資料陣列。

授權

使用這個方法的指令碼需要下列一或多個範圍的授權:

  • https://www.googleapis.com/auth/script.external_request

getRequest(url)

傳回叫用作業時發出的要求。

這個方法不會實際發出要求。

// The code below logs the value for every key of the returned map.
var response = UrlFetchApp.getRequest("http://www.google.com/");
for(i in response) {
  Logger.log(i + ": " + response[i]);
}

參數

名稱類型說明
urlString要查詢的網址。網址的長度上限為 2,082 個字元。

回攻員

Object:欄位名稱與值的對應。對應至少包含下列索引鍵:urlmethodcontentTypepayloadheaders

授權

使用這個方法的指令碼需要下列一或多個範圍的授權:

  • https://www.googleapis.com/auth/script.external_request

getRequest(url, params)

傳回叫用作業時發出的要求。

這個方法不會實際發出要求。

參數

名稱類型說明
urlString要查詢的網址。網址的長度上限為 2,082 個字元。
paramsObject選擇性的 JavaScript 物件,用於指定下方定義的進階參數。

進階參數

名稱類型說明
contentTypeString內容類型 (預設為 'application/x-www-form-urlencoded').另一個內容類型範例為「application/xml」 charset=utf-8'。
headersObject請求中 HTTP 標頭的 JavaScript 鍵/值對應
methodString要求的 HTTP 方法:getdeletepatchpostput。預設為 get
payloadString酬載 (也就是 POST 主體) 的要求。特定 HTTP 方法 (例如 GET) 不接受酬載。可以是字串、位元組陣列 blob 或 JavaScript 物件系統會將 JavaScript 物件解讀為表單欄位的對應 對應至值,其中值可以是字串或 blob。
useIntranetBoolean已淘汰,這用於指示擷取作業來解析指定的 連結至您網域的內部網路中的網址,使用 (已淘汰) SDC
validateHttpsCertificatesBoolean如果 false 擷取任何值,則擷取作業忽略 HTTPS 要求的憑證無效。預設值為 true
followRedirectsBoolean如果 false 沒有自動擷取 追蹤 HTTP 重新導向它會傳回原始 HTTP 回應預設值為 true
muteHttpExceptionsBoolean如果 true 擷取作業未擲回 例外狀況,並改為傳回 HTTPResponse。預設值為 false
escapingBoolean如果網址中的 false 保留字元不是 逸出。預設值為 true

回攻員

Object:欄位名稱與值的對應。對應至少包含下列索引鍵:urlmethodcontentTypepayloadheaders

授權

使用這個方法的指令碼需要下列一或多個範圍的授權:

  • https://www.googleapis.com/auth/script.external_request