Google apps script 允许未经授权的用户运行脚本
我是这方面的新手,但我目前正在为Google apps script 允许未经授权的用户运行脚本,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我是这方面的新手,但我目前正在为用户制作一张锁定表。如果我是所有者,脚本就可以工作,所以唯一的问题是如果我在用户端运行它。我在某个地方读到,我需要使用Web应用程序或doGet函数来读取作为所有者的工作表脚本。我在这些线程上尝试了这些解决方案,但仍然无法使其工作。我不知道脚本是问题还是我是问题,所以我在这里问这个问题。我希望有人能帮我解决这件事 这里是我正在制作的复制电子表格: 我尝试的线程: 这是我的锁函数脚本 function Lock(sheetName1) { var s
用户
制作一张锁定
表。如果我是所有者
,脚本就可以工作,所以唯一的问题是如果我在用户端运行它。我在某个地方读到,我需要使用Web应用程序
或doGet
函数来读取作为所有者的工作表脚本。我在这些线程上尝试了这些解决方案,但仍然无法使其工作。我不知道脚本是问题还是我是问题,所以我在这里问这个问题。我希望有人能帮我解决这件事
这里是我正在制作的复制电子表格:
我尝试的线程:
function Lock(sheetName1) {
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName1);
var protection = sheet1.getProtections(SpreadsheetApp.ProtectionType.SHEET)[0];
if (protection && protection.canEdit() && sheet1.protect().setDescription('Sample protected range')) {
protection.remove();
}
var confirm = Browser.msgBox('Confirmation','Are you sure you want to lock this sheet?',Browser.Buttons.YES_NO);
if(confirm=='yes'){
LockSheet(sheet1);
Browser.msgBox("The sheet is locked!");
}
}
function LockSheet(sheet1) {
var protection = sheet1.protect().setDescription('Sample protected sheet');
var me = Session.getEffectiveUser();
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()) {
protection.setDomainEdit(false);
}
}
这可能是用于锁定工作表的简单Web应用程序的html。选择图纸名称并按下按钮 发布webapp时,请将其设置为随需执行。让它由任何人管理 这可能不是您想要的,但它会起作用,您可以根据自己的意愿对其进行修改。我将它作为一个对话框进行了测试,所以我确信它是有效的
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<select id="sel1">
<option value="Sheet1">Sheet1</option>
<option value="Sheet2">Sheet2</option>
<option value="Sheet3">Sheet3</option>
</select>
<input type="button" value="Lock" onClick="locksheet();" />
<script>
function showsheet() {
google.script.run.lockSheet(document.getElementById('sel1').value);
}
console.log('MyCode');
</script>
</body>
</html>
表一
表2
表3
函数展示页(){
google.script.run.lockSheet(document.getElementById('sel1').value);
}
console.log('MyCode');
webapp需要使用doGet()才能运行。我会留给你去弄清楚的。注意:我没有用它测试您的任何锁定代码,因为您说它可以工作,我认为没有必要。另请参阅