我是Google文档的新手,并设置了一个电子表格,可以访问三个不同Facebook页面上的“喜欢”数量。该代码是Google Documents上的库的一部分,但我正在尝试将得到的总数并将其提取到我的网站上,即PHP。我只是因为无法让它工作而开始只使用一个网站。
以下是为编译喜欢而编写的Javascript:
function FacebookFans(aPageId)
{
if (aPageId === undefined || aPageId === null)
{
throw "No parameter specified. Write Facebook PageID as parameter."
}
if (typeof aPageId != "number")
throw "Parameter must be number.";
// See http://developers.facebook.com/docs/reference/fql/page/ for API documentation
var url = "http://api.facebook.com/method/fql.query?query=SELECT%20page_id,page_url,fan_count%20FROM%20page%20%20WHERE%20page_id=%22" + encodeURIComponent(aPageId) + "%22";
var response = UrlFetchApp.fetch(url);
if (response.getResponseCode() != 200)
throw "Unexpected response code from Facebook.";
var responseText = response.getContentText();
if (responseText == null || responseText == "")
throw "Empty response from Facebook.";
var fan_count = 0;
try
{
var xml = Xml.parse(responseText, false);
var page = xml.getElement().getElement();
if (page == null)
throw "Wrong PageID.";
fan_count = parseInt(page.getElement("fan_count").getText());
}
catch (e)
{
throw "Problem with response from Facebook: " + e;
}
return fan_count;
}
现在,作为序言,我是Javascript的新手,所以如果我的代码已经关闭,不要杀了我,我仍然试图理解。我试图在体内运行它:
<script type="text/javascript">
document.write(FacebookFans(40796308305));
</script>
我认为该函数返回一个值,这将打印出该值(btw的数字是可口可乐的Facebook页面ID,认为这是一个很好的测试)。这是Javascript和PHP之间的冲突吗?我知道这是客户端和服务器端脚本的混合体。我不确定什么是错的原因是我在Javascript中设置了var
,然后用于document.write调用它来测试我的代码是否有效并且它回忆了{{1}好的。无论如何,非常感谢任何帮助。感谢。
答案 0 :(得分:1)
我使用Google Docs脚本调试程序逐步完成您的脚本。
第一个箭头是启动脚本的原因。在Select Function的下拉列表中,选择我创建的“doit”功能(参见屏幕截图的底部)。最后,您可以单击第二个箭头指向的位置并创建断点,以便调试器停止。
在完成所有代码后,您会很高兴知道它的工作正常。
您的问题必须与您对代码运行方式/时间的理解有关。注意这些代码中没有PHP,所以我不确定你为什么要问PHP。
您需要某些“操作”才能运行脚本。您可以阅读有关how scripts are run in Google docs的更多信息。但是你的document.write不适用于此,因为你没有为网页编写脚本。您位于Google文档环境中。
如果您想在Google文档的外部运行脚本,则说明UrlFetchApp调用存在问题,因为这是特定于Google的内容。如果您在.html文档中加载该脚本(并将其放入标记内),则可以使用Google Chrome查找错误。选择扳手图标 - >工具 - > Javascript控制台,它会立即显示错误。现在,通常您可以将其转换为其他内容,但Javascript会尽力阻止您发出跨域请求(learn more)。
要将其转换为服务器端代码,在PHP中非常简单。您基本上只是调用一个URL然后使用XML解析它。要加载网址内容,请使用file_get_contents,然后parse the xml。
答案 1 :(得分:0)
如果FacebookFans(40796308305)
确实有效并返回结果,那么问题就出现在document.write
中。
尝试:
<script type="text/javascript">
alert(FacebookFans(40796308305));
</script>
确保该功能有效。和
<script type="text/javascript">
var a=FacebookFans(40796308305);
document.write('a='+a);
</script>
检查不同类型的问题。
如果没有任何帮助,那么我们需要更多信息,你如何调用这个功能。