Apps Script私有功能

时间:2015-03-12 15:38:38

标签: google-apps-script

在Google应用脚本文档中,有一个关于服务器端私有功能的页面。这应该说明没有私有函数,服务器代码可以从用户浏览器中看到。 谁能解释一下如何在浏览器中看到这样的服务器端功能? 感谢

请参阅:https://developers.google.com/apps-script/guides/html/communication#private_functions

1 个答案:

答案 0 :(得分:5)

服务器代码永远不会在用户的浏览器上显示,只能看到函数名称。私有函数会隐藏这些名称,但更重要的是它们会从前端删除直接调用它们的能力。

换句话说,私有函数允许您定义后端入口点,防止恶意用户绕过您可能拥有的某些检查并直接调用“内部”函数。

为了展示查看名称并调用任何非私有后端函数是多么容易,我已经在我们检查google.script.run对象的地方设置了这个示例:

function myFunction() {}

function anotherFunction() {}

function privateFunction_() {}

function doGet() {
  return HtmlService.createHtmlOutput(
    '<p id="output"></p>'+
    "<script>var s = ''; for( var prop in google.script.run ) s+=prop+'<br>';"+
    "document.getElementById('output').innerHTML = s;</script>"
  );
}

这是发布的示例: https://script.google.com/macros/s/AKfycbzk0d03iB1O3vVYVD_U7eONM357iOPlAn7RFxAeZKx34q1Ones/exec

及其源代码(与上面相同): https://script.google.com/d/1WMY5jWblGl8U84WvVU_mZjHDg-6rGOoOPnKMF6m2bS_V-2g6IChBVDrg/edit

- 解决评论中的问题

doGet函数不能设为私有,因为其名称是固定/预定义的。但这不是一个真正的问题,因为这个函数应该是一个入口点,因为你希望它可以从用户的浏览器中调用,并且可以相应地进行参数检查等。