保护单元免受连续POST的影响

时间:2016-07-04 20:15:17

标签: google-apps-script

我正在尝试在电子表格的单元格中创建基于时间/触发的锁定数据,以便在一天中的某些时段内不更改单元格中的数据。但在我创建时间锁定以删除范围保护之前,我需要在第一次POST时锁定单元格。

如何在第一次POST后锁定一个单元格,以便在锁定期间连续发送到同一单元格的POST不会更改数据?

注意:应用程序以我身份执行,包括匿名在内的任何人都可以访问它。

doPost(e)
{
   ssNew = SpreadsheetApp.openById(ssId);
   var sheet = ssNew.getSheets()[0]; 
   var cell = sheet.getRange(1,1);
   var visits = cell.getValue();
   
   cell.setValue(e.parameter.name);
     SpreadsheetApp.flush();
     
  var lockrange = sheet.getRange(1,1);
     var protection = lockrange.protect().setDescription('Protected');
     var me = Session.getActiveUser();
     protection.removeEditor(me);  
  
}

1 个答案:

答案 0 :(得分:0)

您需要在某种持久性内存中存储标志:例如使用PropertiesService(在这种情况下可能是脚本属性)或另一个工作表中的电子表格单元格。然后,doPost()可以在更改之前检查该标志是否已设置。

您还可以查看programmatically protecting the cell以防止用户进行修改。