因此,我有一些限制在电子表格上的函数,它对受编辑器保护的范围进行了修改。这些函数将在编辑器单击电子表格上的按钮时运行。这些函数还从编辑器无法访问的其他文件中获取数据。因此,按照下面的注释,它必须作为一个web app部署,由我运行,并被任何人访问。
我的理解是,其中必须有一个doGet()函数,并调用web应用程序url。但是,我不知道在哪里添加这个doGet()函数,如下所示。
现有职能的实例:
file: globals.gs,它是将电子表格之外的数据带到文件中的地方。
const CAD_PRODUTO = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const config = {
get ssBDCadProd() {
delete this.ssBDCadProd;
return (this.ssBDCadProd = SpreadsheetApp.openById(CAD_PRODUTO));
}
const sheetBDCadProd = config.ssBDCadProd.getSheetByName('CadProduto');函数位于电子表格中,它根据外部文件中的数据创建一个新的数字:
function gerarRef() {
try {
const response = Browser.msgBox('Do you want to create a new record?', Browser.Buttons.YES_NO);
if (response == 'no') {
return;
} else {
let ref = 0;
const refExistentes = sheetBDCadProd.getRange(2, 1, sheetBDCadProd.getLastRow(), 1).getValues(); //Calls other file
let ultRef = Math.max(...refExistentes);
Logger.log('Ult.: ' + ultRef)
if (ultRef == 0 || ultRef == '') {
ref = 10000;
} else {
ref += ultRef + 1;
}
const refRng = sheetCadProd.getRange('B5').setValue(ref);
refRng.offset(0, 2).activate();
}
} catch (err) {
Browser.msgBox('Ocorreu um erro: ' + err);
}
}除了上面的功能,我还有很多其他的功能。然后如何应用web app方法?
多谢百万!
发布于 2022-03-15 15:24:45
web应用程序部署设置(如"Run“和”by任何人“)仅在doGet和doPost函数上有效,并且仅当它们被HTTP请求调用时(当它们通过使用web被调用时)。
如果您已通过插入绘图并为其分配函数来在电子表格上设置按钮,则web应用程序部署设置将不会对直接调用Google脚本服务(如SpreadsheetApp )的函数产生任何影响,但如果该函数使用UrlFetchApp服务向您的web应用程序发出HTTP请求,则可能会工作。
下面是一个过于简化的Google脚本服务器端代码(.gs),用于调用web应用程序:
function callMyWebApp(){
const url = 'put here your web app URL';
const response = UrlFetchApp.fetch(url); // This will do a GET request
// do something with the response
}一种更简单的方法可能是使用可安装触发器,因为它不需要处理另一个“复杂层”,因为它不需要向您的项目(UrlFetchApp)中添加另一个服务,也不需要在每次更新代码时部署web应用程序并制作一个新版本,但是如果您想将编辑器授权的范围保持在最低限度,就必须使用web应用程序方法。
相关
https://stackoverflow.com/questions/71475453
复制相似问题