Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Web'deki kaynakları yönetmeniz gerekiyorsa, aşağıdaki UrlFetchApp yöntemlerini kullanın.
Basit GET isteği
Yalnızca bir web kaynağı edinmeniz gerekiyorsa kullanın fetch(url) .
var response = UrlFetchApp.fetch('https://www.contoso.com');
yöntemi fetch(url) , yanıtı okumak için yöntemlere sahip olan bir HTTResponse nesnesi döndürür. Metin yanıtını getContentText okuma ve getContent ikili yanıtı okuma yöntemini kullanın.
Yanıt gövdesi bir JSON nesnesi içeriyorsa, JSON nesnesini almak için kullanın getContentText . JSON nesnesindeki tek tek alanlara erişmek için, yanıtı ayrıştırma yöntemini kullanın 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 hatalarını işleme
İstek başarısız olursa (örneğin, 400 Hatalı istekle), hizmet betiğinizi işlemeyi durdurur ve günlüğe bir hata iletisi yazar. İletide isteğin HTTP durum kodu bulunur, ancak yanıtın gövdesinde yer alabilecek hata iletisi dahil edilmez.
Yanıt gövdesini almanız gerekiyorsa, bunun yerine yöntemi çağırın fetch(url, params) ve muteHttpExceptions parametresini true olarak ayarlayın. muteHttpExceptions'ın true olarak ayarlanması, denetimi her zaman betiğinize geri döndürür. Daha sonra isteğin getResponseCode() başarılı veya başarısız olup olmadığını belirlemek ve buna göre hareket etmek için yöntemi çağırmanız gerekir.
var response = UrlFetchApp.fetch('https://contoso.com', { muteHttpExceptions: true });
if (200 == response.getResponseCode())
{
Logger.log('HTTP request succeeded');
}
else
{
Logger.log('HTTP request failed');
}
Web kaynağı ekleme, güncelleştirme veya silme
Bir web kaynağı eklemeniz, güncellemeniz veya silmeniz gerekiyorsa, fetch(url, params) yöntemini kullanın. Bu yöntem, kullanılacak HTTP fiilini, Content-Type üst bilgisini, isteğinizin ihtiyaç duyduğu diğer üst bilgileri ve isteğin yükünü belirtmenize olanak tanır. Bu parametreler hakkında ayrıntılı bilgi için UrlFetchParams nesnesine bakın.
Aşağıdaki örnek, OAuth erişim belirteci gerektiren bir kaynak alır. GET, fetch yönteminin varsayılan HTTP fiili olduğundan, belirtmeniz gereken tek parametre parametredir 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());
Bu örnek, JSON yüküne sahip bir POST isteği gönderir. Yük bir JSON nesnesi olduğundan, örnek parametreyi contentTypeapplication/json olarak ayarlar.
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());
OneDrive'dan bir veri dosyası veya CSV dosyası almak için UrlFetchApp'i kullanma.
OneDrive'dan dosya almak için (https://onedrive.live.com), Microsoft Graph'i kullanın. OneDrive dosyasına erişmek için OAuth erişim belirteci gerekir. Yenileme belirteciniz yoksa erişim belirteci almak için kullanıcı onayı gerekir. Ancak Betikler kullanıcı arabirimi bileşenlerini desteklemediğinden, başka bir şekilde onay almanız gerekir. Yenileme belirteci almak için başka bir yolunuz yoksa, onay ve yenileme belirtecini almak için çalıştırabileceğiniz bir PowerShell betiği aşağıda verilmiştir.
$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 betiğini çalıştırmadan önce bir istemci kimliği almak için şu adımları izlemeniz gerekir.
- Uygulama ekle'yehttps://apps.dev.microsoft.com gidin ve tıklayın.
- Betikler istemcisi gibi bir uygulama adı girin. (Kılavuzlu kurulum'u işaretlemeyin.)
- Oluştur'a tıklayın ve uygulama kimliğinizi (istemci kimliği) not edin.
- Platform Ekle'ye ve ardından Yerel Uygulama'ya tıklayın.
- Microsoft Graph temsilci izinleri altında Ekle'ye tıklayın ve FilesFiles'ı seçin. Okuyun ve offline_access.
- Kaydet'e tıklayın.
Not Defteri'ni veya sık kullandığınız düzenleyiciyi açın ve PowerShell betiğini düzenleyiciye kopyalayın. Uygulamanızı kaydederken aldığınız uygulama kimliğine ayarlayın $clientID .
$clientId = "abc123-4d9e-44f1-837d-a7244af50027"
Dosyayı kaydedin ve GetTokens.ps1 adlandırın (istediğiniz adı koyabilirsiniz, ancak uzantısı .ps1 olmalıdır).
Şimdi bir konsol penceresi açın. Microsoft Windows'ta bir konsol penceresi açmak için aşağıdaki Windows Çalıştır komutunu (<Windows düğmesi>+r) girin:
cmd.exe
Komut isteminde, GetTokens.ps1 kaydettiğiniz klasöre gidin. Ardından aşağıdaki komutu girin.
powershell.exe -File .\GetTokens.ps1
Yürütme ilkesi hatası alırsanız yürütme ilkenizi değiştirmeniz gerekir. Yürütme ilkesi seçenekleri için bkz. Yürütme İlkeleri Hakkında. Bir oturumun yürütme ilkesini değiştirmek için aşağıdaki komutu girin:
powershell.exe -ExecutionPolicy Bypass -File .\GetTokens.ps1
PowerShell betiği başarıyla çalıştırıldığında, Microsoft hesabı (MSA) kimlik bilgilerinizi girdiğiniz bir tarayıcı oturumu başlatır (kimlik bilgilerinin OneDrive dosyalarınıza erişimi olmalıdır). Onay verdikten sonra, tarayıcının adres çubuğu verme kodunu içerir (bkz. ?code={bu kodu kopyala}).
https://login.live.com/oauth20_desktop.srf?code=M7ab570e5-a1c0-32e5-a946-e4490c822954&lc=1033
Hibe kodunu (M7ab570e5-a1c0-32e5-a946-e4490c822954) kopyalayın ve komut isteminde konsol penceresine girin. PowerShell betiği daha sonra bir yenileme belirteci döndürür. Erişim belirtecini almak için betiğinizdeki yenileme belirtecini kullanın. Yenileme belirtecine parola gibi davranmalısınız; Birisi eline geçerse OneDrive verilerinize erişebilir.
Yenileme belirteci uzun ömürlüdür ancak geçersiz hale gelebilir. invalid_grant hatası alırsanız, yenileme belirteciniz artık geçerli değildir, onay ve yeni bir yenileme belirteci almak için PowerShell betiğini yeniden çalıştırmanız gerekir.
CSV dosyası indiren örnek
Yenileme belirtecini aldıktan sonra, aşağıdaki örnekte 1) erişim belirteci almak için yenileme belirtecini kullanma ve 2) CSV dosyasını indirmek için kullandığınız indirme URL'sini almak için Microsoft Graph'i çağırma işlemleri gösterilir. {yourclientid} değerini kayıtlı uygulamanızın uygulama kimliğiyle değiştirin ve {yourrefreshtoken} değerini yenileme belirtecinizle değiştirin.
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 dosyasını ayrıştırma
Yerleşik bir CSV ayrıştırma aracı yoktur, bu nedenle kendi aracınızı yazmanız veya çevrimiçi olarak bir tane bulmanız gerekir. Örneğin, çevrimiçi hızlı bir arama, bunu Stack Overflow'da buldu. Çevrimiçi bir tane bulursanız, kullanım kısıtlaması olmadığından emin olun.
Google hizmetlerine erişim
Google hizmetlerine erişmek için UrlFetchApp'i kullanma hakkında bilgi için Google hizmetlerini çağırma başlıklı makaleye göz atın.