【发布时间】:2016-11-15 16:49:23
【问题描述】:
希望这是一个相当简单的问题!
我制作了一个 Google 脚本,可以写入单独的工作表“MasterSheet”中的单元格(这里有几个有用的问答)。这最终将被嵌入到我提供给各个用户的多个不同工作表中。
当用户对“MasterSheet”拥有编辑权限时,它可以完美运行,但我需要保持私密 - 即除了我之外的任何人都看不到。
作为背景:在每个“用户表”中,IMPORTRANGE 用于从“MasterSheet”中导入该用户可以查看的列,然后脚本允许用户向 MasterSheet 添加注释。 我可以查看 MasterSheet 以在一个统一的工作表上查看来自不同用户的所有带有 cmets 的列,但单个用户应该无法查看此内容。
写入工作表的特定脚本相当通用:
function saveCommentToMasterSheet(form){
var company = form.company,
contact = form.contactselect,
comment = form.message ,
ss = SpreadsheetApp.openById("MASTERSHEET_ID").getSheetByName('MasterSheet');
if(company=="all"){
var row = findCell(contact);
} else {
var row = findCell2(contact,company);
}
//^The above finds the specific row number relating to the entry the user wants to comment on.
var cell2 = ss.getRange(row,11);
// ^In this case '11' is the column related to this sheet's specific user, I've made separate sheets for each user that are identical except this column number
cell2.setValue(comment);
}
我相信我可以让任何知道链接的人都可以编辑 MasterSheet,但我宁愿避免这样做,特别是因为脚本嵌入在每个电子表格中,所以如果用户只是查看它,他们就会找到 MasterSheet id。
我知道可以像我一样使用执行 API 运行脚本,但老实说,我有点费力地想办法让它工作。
对不起,如果我问的是一个简单的问题 - 我已经很好地搜索了它,但无法弄清楚。
非常感谢! 亚历克斯
注意这个Running a google script from within a spreadsheet, but as a different user? 看起来像一个类似的问题,但我真的很想将评论系统保留在用户的电子表格中。
【问题讨论】:
-
将
doPost(e)函数放入绑定到主电子表格的项目中。然后将脚本发布为 Web 应用程序。将原始函数保留在将分发给用户的电子表格中,但您将剥离所有当前代码,并将其放入绑定到主电子表格的项目中的函数中。当前将数据写入主电子表格的当前函数将不再直接执行此操作。分布式电子表格中的当前函数将调用主电子表格中的doGet(e)函数,并将数据发送到e中。
标签: google-apps-script google-sheets