2015-06-11 51 views
0

我想運行一個谷歌應用程序腳本,在一個文檔,發送一個附加的谷歌電子表格作爲一個.xlsx文件的電子郵件自動,每隔幾個小時運行。自動OAuth2令牌不工作 - 谷歌應用程序腳本

下面是如果我使用來自谷歌的OAuth2操場來手動的OAuth2代碼,工程解決方案:

function downloadXLS() { 
    var AUTH_TOKEN = "xxxx"; 
    var auth = "AuthSub token=\"" + AUTH_TOKEN + "\""; 
    var file = Drive.Files.get('xxxx'); 
    var response = UrlFetchApp.fetch('https://docs.google.com/spreadsheets/d/xxx/export?format=xlsx',{headers: {Authorization: auth}});  
    var doc = response.getBlob(); 
    app = DriveApp.createFile(doc).setName(file.title + '.xls') 
    MailApp.sendEmail("[email protected]", "oh man", " Body", { attachments: app }) 
}  

要嘗試自動生成的授權令牌我跟着這裏正是所有的步驟:

https://github.com/googlesamples/apps-script-oauth2

更改的腳本: .setClientId( '... ') .setClientSecret(' ...') 我也把URI中的鐠oject標識的谷歌開發者控制檯

https://script.google.com/macros/d/myprojectkey/usercallback但是這裏面,當我運行函數makeRequest的(),它告訴我:「訪問不批或已過期」

所以我不知道我錯過了哪一步。

你對發生了什麼有什麼線索嗎?

幫助深表感謝,感謝

回答

1

你需要做的第2步:將用戶引導到授權URL
當側邊欄加載後,你會點擊鏈接,基於OAuth的認證對話框將打開。允許訪問後,您可以使用getAccessToken()方法。

編輯: 對於您的具體情況,您不需要單獨的OAuth流程。您可以使用Apps腳本獲取您需要執行導出的令牌。由於您已經請求訪問驅動器,您的令牌將用於導出調用。

function downloadXLS() { 

    var file = Drive.Files.get('xxxx'); 
    var response = UrlFetchApp.fetch('https://docs.google.com/spreadsheets/d/xxx/export?format=xlsx',{headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}});  
    var doc = response.getBlob(); 
    app = DriveApp.createFile(doc).setName(file.title + '.xls') 
    MailApp.sendEmail("[email protected]", "oh man", " Body", { attachments: app }) 
}  
+0

謝謝斯賓塞。 即使腳本在沒有錯誤的情況下處理代碼,實際上側邊欄也不會顯示。 唯一打開的是標準的授權彈出窗口,即使沒有「側邊欄」代碼也會發生這種情況。 – j0nthn

+0

哦,是的。您將不得不手動運行該功能來顯示側邊欄或添加一個菜單項以啓動它。並且會有兩個認證流程。一個用於腳本,另一個用於Oauth庫。也看看我的編輯。 –

+0

感謝您的編輯,它完美的工作! 實際上,我只需要上面的代碼(然後手動授權項目中的驅動器api) – j0nthn

相關問題