我有一个访问电子表格的应用程序脚本(如果您想玩这里)。对大多数东西来说,它所做的就是读床单.
然而..。
我想让用户存储一些数据。基本上,我让脚本收集他们的电子邮件地址并使用它在我的电子表格中创建一个页面.
当然,不幸的是,这样做需要给他们读/写的权限.为了保护用户的数据,我不想这么做。
但是,这两者都有可能:
我在这个过程中学到的东西:
我在doGet例程中初始化页面。我将用户名和相关的工作表打包在一个函数中,以便在测试时轻松地将占位符替换为电子邮件地址。以下代码对我来说很好,因为我是经过身份验证的用户:
function doGet(e) {
if (!e.parameter.page) {
var userCrewSheetName = getUserSheetName();
var userCrewSheet = activeSpreadsheet.getSheetByName(userCrewSheetName);
initializeSheet(userCrewSheet,userCrewSheetName);
var userBonusSheetName = getUserSheetName("bonus");
var userBonusSheet = activeSpreadsheet.getSheetByName(userBonusSheetName);
initializeSheet(userBonusSheet,userBonusSheetName);
return HtmlService.createTemplateFromFile('test').evaluate();
}
return HtmlService.createTemplateFromFile(e.parameter['page']).evaluate();
}
function initializeSheet(sheet,sheetName) {
if(sheet == null) {
sheet = activeSpreadsheet.insertSheet();
sheet.setName(sheetName);
setHeaders(sheet,sheetName);
}
}
function getUserSheetName(sheetType) {
var userName = Session.getActiveUser().getEmail();
if (!userName) { return };
if(sheetType == "bonus") {
return userName + '_my_bonus';
} else {
return userName + '_my_crew';
}
return "error";
}
发布于 2019-06-13 08:17:03
去过那里,伙计。如果我正确理解您的问题,您希望您的webapp能够检测用户ID并允许他们从其中读取数据,在某些情况下还允许他们将数据存储到其中。
您的回答是,您需要再次发布您的webapp与RunAs:我。这样,您仍然能够捕获用户is,允许它们读取数据和写入数据,而无需在您访问webApp时直接编辑访问您的电子表格。干杯!!
https://stackoverflow.com/questions/56582496
复制相似问题