หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
ถ้าคุณต้องการจัดการทรัพยากรบนเว็บ ให้ใช้วิธีการต่อไปนี้ของ UrlFetchApp
คําขอ GET อย่างง่าย
ใช้ fetch(url) ถ้าคุณเพียงต้องการรับทรัพยากรบนเว็บ
var response = UrlFetchApp.fetch('https://www.contoso.com');
เม fetch(url) ธอด ส่งกลับวัตถุ HTTResponse ซึ่งมีวิธีการอ่านการตอบสนอง
getContentTextใช้วิธีการ สําหรับการอ่านการตอบสนองข้อความและgetContentสําหรับการอ่านการตอบสนองไบนารี
ถ้าเนื้อความการตอบสนองมีวัตถุ JSON ใช้ getContentText เพื่อรับวัตถุ JSON หากต้องการเข้าถึงแต่ละเขตข้อมูลในออบเจ็กต์ JSON ให้ใช้ JSON.parse() วิธีการในการแยกวิเคราะห์การตอบสนอง
var stock = JSON.parse(response.getContentText());
Logger.log(`stock symbol: ${stock["symbol"]}`);
Logger.log(`company: ${stock["companyName"]}`);
Logger.log(`close price: ${stock["close"]}`);
การจัดการข้อผิดพลาด HTTP
ถ้าคําขอล้มเหลว (ตัวอย่างเช่น มี 400 คําขอไม่ถูกต้อง) บริการหยุดการประมวลผลสคริปต์ของคุณ และเขียนข้อความข้อผิดพลาดลงในบันทึก ข้อความมีรหัสสถานะ HTTP ของคําขอ แต่ไม่ใช่ข้อความแสดงข้อผิดพลาดที่อาจอยู่ในเนื้อความของการตอบสนอง
หากคุณต้องการรับเนื้อหาการตอบสนอง ให้fetch(url, params)เรียกใช้เมธอด แทนและตั้งค่าพารามิเตอร์ muteHttpExceptions เป็น true การตั้งค่า muteHttpExceptions เป็นจริงจะ ส่งกลับตัวควบคุมไปยังสคริปต์ของคุณเสมอ จากนั้นคุณจะต้องเรียกใช้ getResponseCode() เมธอด เพื่อกําหนดความสําเร็จหรือความล้มเหลวของคําขอ และดําเนินการตามนั้น
var response = UrlFetchApp.fetch('https://contoso.com', { muteHttpExceptions: true });
if (200 == response.getResponseCode())
{
Logger.log('HTTP request succeeded');
}
else
{
Logger.log('HTTP request failed');
}
การเพิ่ม การอัปเดต หรือการลบทรัพยากรบนเว็บ
ถ้าคุณต้องการเพิ่ม อัปเดต หรือลบทรัพยากรบนเว็บ ให้ใช้เมธอด fetch(url, params) วิธีนี้ช่วยให้คุณสามารถระบุคํากริยา HTTP ที่จะใช้ ส่วนหัว Content-Type ส่วนหัวอื่น ๆ ที่คําขอของคุณต้องการและส่วนของคําขอ สําหรับรายละเอียดเกี่ยวกับพารามิเตอร์เหล่านี้ ดูวัตถุ UrlFetchParams
ตัวอย่างต่อไปนี้ได้รับทรัพยากรที่จําเป็นต้องมีโทเค็นการเข้าถึง OAuth เนื่องจาก GET เป็นกริยา HTTP เริ่มต้นของเมธอดการดึงข้อมูล พารามิเตอร์เดียวที่คุณต้องระบุคือ headers พารามิเตอร์
var token = "<the oauth token goes here>";
var response = UrlFetchApp.fetch('https://contoso.com', { headers: { Authorization: `Bearer ${token}` } });
var jsonObject = JSON.parse(response.getContentText());
ตัวอย่างนี้ส่งคําขอ POST ด้วยส่วนข้อมูล JSON เนื่องจากส่วนข้อมูลเป็นออบเจ็กต์ JSON ตัวอย่างจึงตั้งค่าพารามิเตอร์เป็น contentTypeapplication/json
var myData = {
'id' : '123abc',
'name' : 'leg',
'color' : 'red'
};
var options = {
'method' : 'post',
'contentType' : 'application/json',
'payload' : JSON.stringify(myData)
};
var response = UrlFetchApp.fetch('https://contoso.com', options);
var jsonObject = JSON.parse(response.getContentText());
ใช้ UrlFetchApp เพื่อรับไฟล์ข้อมูลหรือไฟล์ CSV จาก OneDrive
เมื่อต้องการรับไฟล์จาก OneDrive (https://onedrive.live.com) ให้ใช้ Microsoft Graph การเข้าถึงไฟล์ OneDrive ต้องใช้โทเค็นการเข้าถึง OAuth และการรับโทเค็นการเข้าถึงจําเป็นต้องได้รับความยินยอมจากผู้ใช้เว้นแต่คุณจะมีโทเค็นรีเฟรช แต่เนื่องจากสคริปต์ไม่รองรับคอมโพเนนต์ UI คุณจะต้องได้รับความยินยอมด้วยวิธีอื่น ถ้าคุณยังไม่มีวิธีอื่นในการรับโทเค็นรีเฟรช นี่คือสคริปต์ PowerShell ที่คุณสามารถเรียกใช้เพื่อรับความยินยอมและโทเค็นรีเฟรช
$clientId = "your application ID goes here"
Start-Process "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=$clientId&scope=files.read offline_access&response_type=code&redirect_uri=https://login.live.com/oauth20_desktop.srf"
$code = Read-Host "Please enter the code"
$response = Invoke-WebRequest https://login.microsoftonline.com/common/oauth2/v2.0/token -ContentType application/x-www-form-urlencoded -Method POST -Body "client_id=$clientid&redirect_uri=https://login.live.com/oauth20_desktop.srf&code=$code&grant_type=authorization_code"
Write-Output "Refresh token: " ($response.Content | ConvertFrom-Json).refresh_token
ก่อนที่คุณจะสามารถเรียกใช้สคริปต์ PowerShell ได้ คุณต้องทําตามขั้นตอนเหล่านี้เพื่อรับ ID ไคลเอ็นต์
- ไปที่ https://apps.dev.microsoft.com แล้วคลิก เพิ่มแอป
- ใส่ชื่อแอป เช่น สคริปต์ไคลเอ็นต์ (ไม่ต้องเลือกการตั้งค่าที่แนะนํา)
- คลิก สร้าง และจด ID แอปพลิเคชัน (ID ไคลเอ็นต์) ของคุณ
- คลิก เพิ่มแพลตฟอร์ม และจากนั้น แอปพลิเคชันดั้งเดิม
- ภายใต้ สิทธิ์ที่ได้รับมอบสิทธิ์ของ Microsoft Graph ให้คลิก เพิ่ม และเลือก ไฟล์.อ่านและ offline_access
- คลิก บันทึก
เปิด Notepad หรือตัวแก้ไขที่คุณชื่นชอบ และคัดลอกสคริปต์ PowerShell ไปยังตัวแก้ไข ตั้งค่า $clientID เป็น ID แอปพลิเคชันที่คุณได้รับเมื่อคุณลงทะเบียนแอปของคุณ
$clientId = "abc123-4d9e-44f1-837d-a7244af50027"
บันทึกไฟล์และตั้งชื่อไฟล์ GetTokens.ps1 (คุณสามารถตั้งชื่อเป็นอะไรก็ได้ที่คุณต้องการ แต่ส่วนขยายจะต้อง .ps1)
ตอนนี้เปิดหน้าต่างคอนโซล เมื่อต้องการเปิดหน้าต่างคอนโซลบน Microsoft Windows ให้ป้อนคําสั่ง Windows Run ต่อไปนี้ (<Windows button>+r):
cmd.exe
ที่พรอมต์คําสั่ง ให้นําทางไปยังโฟลเดอร์ที่คุณบันทึก GetTokens.ps1 จากนั้น ป้อนคําสั่งต่อไปนี้
powershell.exe -File .\GetTokens.ps1
ถ้าคุณได้รับข้อผิดพลาดนโยบายการดําเนินการ คุณจะต้องเปลี่ยนนโยบายการดําเนินการของคุณ สําหรับตัวเลือกนโยบายการดําเนินการ ดูเกี่ยวกับนโยบายการดําเนินการ หากต้องการเปลี่ยนนโยบายการดําเนินการสําหรับเซสชัน ให้ป้อนคําสั่งต่อไปนี้:
powershell.exe -ExecutionPolicy Bypass -File .\GetTokens.ps1
เมื่อเรียกใช้สคริปต์ PowerShell สําเร็จ จะมีการเริ่มเซสชันเบราว์เซอร์ที่คุณใส่ข้อมูลประจําตัวบัญชี Microsoft (MSA) ของคุณ (ข้อมูลประจําตัวต้องมีสิทธิ์เข้าถึงไฟล์ OneDrive ของคุณ) หลังจากยินยอม แถบที่อยู่ของเบราว์เซอร์จะมีรหัสให้ (ดู?code={คัดลอกรหัสนี้})
https://login.live.com/oauth20_desktop.srf?code=M7ab570e5-a1c0-32e5-a946-e4490c822954&lc=1033
คัดลอกรหัสเงินช่วยเหลือ (M7ab570e5-a1c0-32e5-a946-e4490c822954) และป้อนในหน้าต่างคอนโซลที่พร้อมท์ จากนั้นสคริปต์ PowerShell จะส่งกลับโทเค็นรีเฟรช ใช้โทเค็นรีเฟรชในสคริปต์ของคุณเพื่อรับโทเค็นการเข้าถึง คุณควรถือว่าโทเค็นรีเฟรชเหมือนกับที่คุณต้องการรหัสผ่าน ถ้ามีบางคนได้รับสิทธิ์การหยุดไว้ พวกเขาจะสามารถเข้าถึงข้อมูล OneDrive ของคุณได้
โทเค็นรีเฟรชมีอายุนาน แต่อาจไม่ถูกต้อง ถ้าคุณได้รับข้อผิดพลาด invalid_grant โทเค็นการรีเฟรชของคุณไม่ถูกต้องอีกต่อไป และคุณจะต้องเรียกใช้สคริปต์ PowerShell อีกครั้งเพื่อรับความยินยอมและโทเค็นรีเฟรชใหม่
ตัวอย่างที่ดาวน์โหลดไฟล์ CSV
หลังจากรับโทเค็นรีเฟรช ตัวอย่างต่อไปนี้แสดงวิธีการ 1) ใช้โทเค็นรีเฟรชเพื่อรับโทเค็นการเข้าถึง และ 2) เรียกใช้ Microsoft Graph เพื่อรับ URL ดาวน์โหลดที่คุณใช้เพื่อดาวน์โหลดไฟล์ CSV แทนที่ {yourclientid} ด้วย ID แอปพลิเคชันของแอปที่ลงทะเบียนไว้ และแทนที่ {yourrefreshtoken} ด้วยโทเค็นการรีเฟรชของคุณ
function main() {
var clientId = "{yourclientid}";
var refreshToken = "{yourrefreshtoken}";
var options = {
'method' : 'post',
'contentType' : 'application/x-www-form-urlencoded',
'payload' : `client_id=${clientId}&redirect_uri=https://login.live.com/oauth20_desktop.srf&refresh_token=${refreshToken}&grant_type=refresh_token`
};
// Use the refresh token to get the access token.
var response = UrlFetchApp.fetch('https://login.microsoftonline.com/common/oauth2/v2.0/token', options);
var tokens = JSON.parse(response.getContentText());
// Get the contents of the CSV file from OneDrive passing the access token in the Authorization header.
// Replace the path and file name (/me/drive/root/children/bids.csv) with your path and file name.
response = UrlFetchApp.fetch('https://graph.microsoft.com/v1.0/me/drive/root/children/bids.csv/content', { headers: { Authorization: `Bearer ${tokens['access_token']}` } });
// Read and parse the contents of the file. The parseCSV method is a placeholder for
// whichever method you provide to parse the file.
var file = response.getContentText();
var data = parseCSV(file);
}
แยกวิเคราะห์ไฟล์ CSV
ไม่มีเครื่องมือแยกวิเคราะห์ CSV ในตัว ดังนั้นคุณจะต้องเขียนของคุณเองหรือค้นหาออนไลน์ ตัวอย่างเช่น การค้นหาด่วนแบบออนไลน์พบ รายการนี้ บน Stack Overflow ถ้าคุณพบหนึ่งออนไลน์ ตรวจสอบให้แน่ใจว่า ไม่มีข้อจํากัดการใช้งาน
การเข้าถึงบริการของ Google
สําหรับข้อมูลเกี่ยวกับการใช้ UrlFetchApp เพื่อเข้าถึงบริการของ Google ดูการเรียกบริการของ Google