2015-02-11 15 views
0

我已經在Google App Engine上構建了一個非常有用的數據庫和工具集。我已經開始了一項新工作,涉及到我的舊工作,並且我想從我的GAE應用程序訪問一些數據。使用GAS(電子表格的自定義函數)從GAE應用程序中獲取HTML

長話短說,這個代碼在谷歌應用程序腳本與谷歌Apps的電子表格中使用時失敗:

function getData(id) { 
    url = "http://fakeapp.appspot.com/functions/func?id=" + id; 
    response = UrlFetchApp.fetch(url); 
    if (response.getResponseCode() == 200) { 
     return response.getContentText(); 
    } else { 
     return "error"; 
    } 
} 

在電子表格中你必須:

=getDate("XYZ")

這應該返回一些數值:

10000

在我的GAE yaml文件中,此特定網址無需授權。然而,當你在谷歌電子表格使用自定義函數,它基本上就會從很熟悉的谷歌登錄頁面的HTML:

一個帳戶。所有的Google。

那種事情。問題:

  • (1)我在做一些不可能的事情嗎?我有很多其他場景下的抓取工作,所以它似乎與我的GAE應用程序有關。
  • (2)如果不是,我該如何得到這個工作?

謝謝你的時間。

+0

嘗試從常規webapp(客戶端js)獲取ajax。如果您也在那裏獲得身份驗證,則更易於調試。也請嘗試https – 2015-02-11 23:33:23

+0

謝謝,它看起來像一個問題是我必須使用HTTPS。謝謝。但我沒有被允許訪問,下面是輸出:XMLHttpRequest無法加載https://fakeapp.appspot.com/functions/func?id=XYZ。請求的資源上沒有「Access-Control-Allow-Origin」標題。原因'https://docs.google.com'因此不被允許訪問。 – MHuckelberryP 2015-02-11 23:47:06

+0

http://enable-cors.org/server_appengine.html也是s.o.有答案。 – 2015-02-11 23:55:03

回答

1

您可以使用UrlFetchApp從應用程序腳本中明確訪問您的App Engine應用程序,我經常使用該方法。

如果您正在獲取Google登錄頁面,GAE上的端點必須要求進行一些身份驗證。從Google Apps腳本

UrlFetchApp請求是匿名請求,他們不沿執行腳本的用戶的憑據傳遞。

相關問題