【问题标题】:Password Protect Google Apps Script密码保护 Google Apps 脚本
【发布时间】:2019-03-03 03:02:04
【问题描述】:

所以我在这里为我的 google 表格创建了一个小脚本。由于谷歌表格不允许您在单个表格上使用密码保护,我想知道是否有办法用密码保护我的脚本,以便只有某些人可以使用它。这是我的代码。

function onOpen() {
  SpreadsheetApp.getUi()
      .createMenu('Custom Menu')
      .addItem('Record', 'Record')
      .addItem('Cancelation', 'Cancel')
      .addToUi();
}

function Record() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Nightly Stats'),
    row = sheet.getLastRow()
    range = sheet.getRange("A3:G3");
  sheet.insertRowAfter(row);
    range.copyTo(sheet.getRange(row + 1, 1), {contentsOnly:true});
}

如果您能提供任何建议,我将不胜感激。

【问题讨论】:

  • 虽然我不确定我是否能正确理解您的问题,但我可以问您与特定用户共享电子表格的区别吗?在这种情况下,用户需要登录 Google。
  • 同一个电子表格有很多用户吗?还是每个用户都有自己的电子表格?
  • 有很多用户可以访问电子表格。我发现如果我保护单个工作表,那么脚本根本无法编辑它们,所以我想使用密码,这样只有某些人才能使用脚本,如果这有意义的话。我的想法是我可以使用提示来执行此操作......就像来自提示的响应 == 一些文本,那么他们可以继续使用脚本......

标签: google-apps-script passwords password-protection


【解决方案1】:

好的,所以我实际上想出了如何通过提示进行密码系统。这是我所做的,以防将来有人需要它。

function Cancel() {
  var SS = SpreadsheetApp.getActiveSpreadsheet();
  var ui = SpreadsheetApp.getUi();

  // first prompt
  var presult = ui.prompt(
    "Please Enter the Password to Use this Feature.",
    ui.ButtonSet.OK_CANCEL);

  var password = "Test";
  var pbutton = presult.getSelectedButton();
  var ptext = presult.getResponseText();

  // User clicked "OK" on first prompt
  if (pbutton == ui.Button.CANCEL) {
    ui.alert('The Process Was Ended.');
    } else if (pbutton == ui.Button.CLOSE) {
      ui.alert('The Process Was Ended.');
    } else if (ptext != password) {
      Password();   
    } else {
      "Insert whatever action you would want them to do after the password works here"
    }
  }

function Password() {
  var SS = SpreadsheetApp.getActiveSpreadsheet();
  var ui = SpreadsheetApp.getUi();
  var response = ui.alert("The Password is Incorrect. Retry?",
      ui.ButtonSet.OK_CANCEL);

  if (response == ui.Button.CANCEL) {
    ui.alert("The Process Was Ended.");
  } else if (response == ui.Button.CLOSE) {
    ui.alert("The Process Was ended.");
  } else {
    Cancel();
  }
}

我只提供了一段代码,如果看起来有点奇怪,很抱歉。我只是不想提供整个代码并让您搜索所有内容。希望有帮助:)

【讨论】:

  • 这不只是将密码作为纯文本存储在工作表中,任何使用工作表的人都可以访问吗?
【解决方案2】:

这是一个技巧,但对免费帐户用户很有用! 使用onOpen() 函数和下面的小代码。

var inputPassword;
function checkPassword(){  
  
  var refAddress = 'https://script.google.com/d/' + ScriptApp.getScriptId() + '/edit';
  var curAddress = refAddress;
  Logger.log(curAddress);  
  
  var referPassword = 1234;

  if( refAddress == curAddress){
      while(referPassword != inputPassword){
      inputPassword = Browser.inputBox('[Password Check]', '[Input Password!]', Browser.Buttons.OK_CANCEL);
    }
  }
}

请参阅my blog 了解更多信息。

【讨论】:

    【解决方案3】:

    所以你想保护脚本本身? 将脚本托管在不同的位置并使用库: https://developers.google.com/apps-script/guides/libraries

    【讨论】:

      猜你喜欢
      • 2014-10-05
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      • 2011-05-18
      • 2013-04-11
      • 2019-09-18
      • 1970-01-01
      相关资源
      最近更新 更多