google-apps-script - Apps 脚本私有(private)函数

标签 google-apps-script

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

见:https://developers.google.com/apps-script/guides/html/communication#private_functions

最佳答案

服务器代码在用户的浏览器上永远不可见,只有函数名称。私有(private)函数隐藏了这些名称,但更重要的是它们消除了前端直接调用它们的能力。

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

为了展示查看名称和调用任何非私有(private)后端函数是多么容易,我提出了这个例子,我们检查了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函数不能设为私有(private),因为它的名称是固定的/预定义的。但这并不是一个真正的问题,因为这个函数无论如何都应该是一个入口点,并且因为您希望它可以从用户的浏览器中调用,并且可以相应地进行参数检查等。

关于google-apps-script - Apps 脚本私有(private)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29014087/

相关文章:

google-apps-script - Bing Ads API v2 oAuth2

google-apps-script - 在 Google 表格中插入新行时的默认单元格值

javascript - 应用脚本 : Get user input from HTML form and save them as global variables

javascript - 在谷歌表单填充电子表格数据后,有什么方法可以使用脚本删除谷歌文档中的一些内容?

google-apps-script - 如何从 Google Apps Script 连接到 Facebook Graph API?

javascript - 谷歌应用程序脚本 : how to copy array of objects to range?

google-apps-script - 服务错误: Spreadsheets (getLastRow)

google-apps-script - Google Apps 脚本 setValues() 问题 : timing out intermittently

javascript - 将 google 工作表中的一系列单元格作为 PDF 下载到本地计算机和其他自动化脚本的脚本?

javascript - regionCode 无法始终正常工作,YouTube API,Google App Script