Aracılığıyla paylaş


Kaynakları web'den getirme

Web'de kaynakları yönetmeniz gerekiyorsa aşağıdaki UrlFetchApp yöntemlerini kullanın.

Basit GET isteği

Yalnızca bir web kaynağı almanız gerekiyorsa kullanın fetch(url) .

    var response = UrlFetchApp.fetch('https://www.contoso.com');

fetch(url) yöntemi, yanıtı okumak için yöntemleri olan bir HTTResponse nesnesi döndürür. Metin yanıtını getContentText okumak ve getContent ikili yanıt okumak için 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 yöntemini kullanarak JSON.parse() yanıtı ayrıştırın.

    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. İleti, isteğin HTTP durum kodunu içerir ancak yanıtın gövdesinde olabilecek hata iletisini içermez.

Yanıt gövdesini almanız gerekiyorsa, bunun yerine yöntemini çağırın fetch(url, params) ve sessizHttpExceptions parametresini true olarak ayarlayın. HttpExceptions sessiz ayarının true olarak ayarlanması her zaman denetimi betiğinize döndürür. Ardından isteğin başarısını getResponseCode() veya başarısızlığını belirlemek ve buna göre hareket etmek için yöntemini ç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

Web kaynağı eklemeniz, güncelleştirmeniz veya silmeniz gerekiyorsa fetch(url, params) yöntemini kullanın. Bu yöntem kullanılacak HTTP fiilini, İçerik Türü üst bilgisini, isteğinizin ihtiyaç duyduğu diğer üst bilgileri ve isteğin yükünü belirtmenize olanak tanır. Bu parametrelerle ilgili ayrıntılar için urlFetchParams nesnesine bakın.

Aşağıdaki örnek, OAuth erişim belirteci gerektiren bir kaynak alır. GET, getirme yönteminin varsayılan HTTP fiili olduğundan, belirtmeniz gereken tek parametre parametresidir 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 veri dosyası veya CSV dosyası almak için UrlFetchApp kullanma.

OneDrive'dan (https://onedrive.live.com ) dosya almak için Microsoft Graph'ı kullanın. OneDrive dosyasına erişmek için OAuth erişim belirteci gerekir. Ayrıca bir erişim belirteci almak için yenileme belirteciniz olmadığı sürece kullanıcı onayı gerekir. Ancak Betikler kullanıcı arabirimi bileşenlerini desteklemediğinden başka bir yolla onay almanız gerekir. Yenileme belirtecini 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ğıdadır.

$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ırabilmeniz için önce istemci kimliğini almak için bu adımları izlemeniz gerekir.

  1. Adresine gidin ve Uygulama ekle'yehttps://apps.dev.microsoft.com tıklayın.
  2. Betikler istemcisi gibi bir uygulama adı girin. (Destekli kurulum'u denetlemeyin.)
  3. Oluştur'a tıklayın ve uygulama kimliğinizi (istemci kimliği) not edin.
  4. Platform Ekle'ye ve ardından Yerel Uygulama'ya tıklayın.
  5. Microsoft Graph temsilci izinleri'nin altında Ekle'ye tıklayın ve Dosyalar.Okuma ve offline_access'yi seçin.
  6. 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ı kaydettiğinizde 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 her şeyi adlandırabilirsiniz, ancak uzantı .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 girin (<Windows button>+r):

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). Onayladıktan sonra, tarayıcının adres çubuğu verme kodunu içerir (bkz. ?code={bu kodu kopyalayın}).

https://login.live.com/oauth20_desktop.srf?code=M7ab570e5-a1c0-32e5-a946-e4490c822954&lc=1033

Verme kodunu (M7ab570e5-a1c0-32e5-a946-e4490c822954) kopyalayın ve istemin konsol penceresine girin. Ardından PowerShell betiği bir yenileme belirteci döndürür. Erişim belirtecini almak için betiğinizdeki yenileme belirtecini kullanın. Yenileme belirtecini parola gibi değerlendirmelisiniz; birisi bu bilgileri ele alırsa 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 ve onay ve yeni bir yenileme belirteci almak için PowerShell betiğini yeniden çalıştırmanız gerekir.

CSV dosyasını 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'ı çağırma gösterilmektedir. {yourclientid} değerini kayıtlı uygulamanızın uygulama kimliğiyle ve {yourrefreshtoken} yerine yenileme belirtecinizi yazın.

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 CSV ayrıştırma aracı olmadığından, kendi dosyanızı yazmanız veya çevrimiçi olarak bir tane bulmanız gerekir. Örneğin, hızlı bir çevrimiçi arama bunu Stack Overflow'da buldu. Çevrimiçi olarak bir tane bulursanız kullanım kısıtlaması olmadığından emin olun.

Google hizmetlerine erişme

Google hizmetlerine erişmek için UrlFetchApp kullanma hakkında bilgi için bkz . Google hizmetlerini çağırma.