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()才能运行。我会留给你去弄清楚的。注意:我没有用它测试您的任何锁定代码,因为您说它可以工作,我认为没有必要。

另请参阅