首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Google脚本和工作表--我需要和完整的读/写共享吗?

Google脚本和工作表--我需要和完整的读/写共享吗?
EN

Stack Overflow用户
提问于 2019-06-13 14:14:15
回答 1查看 80关注 0票数 1

我有一个访问电子表格的应用程序脚本(如果您想玩这里)。对大多数东西来说,它所做的就是读床单.

然而..。

我想让用户存储一些数据。基本上,我让脚本收集他们的电子邮件地址并使用它在我的电子表格中创建一个页面.

当然,不幸的是,这样做需要给他们读/写的权限.为了保护用户的数据,我不想这么做。

但是,这两者都有可能:

  1. 扩展对我的应用程序本身的读/写访问权限(对于工作表),而不公开该页,以及
  2. 还能访问用户的电子邮件地址吗?

我在这个过程中学到的东西:

  • 如果我部署应用程序以我的身份运行,我无法访问用户的电子邮件地址。
  • API键只对公共数据有用。

我在doGet例程中初始化页面。我将用户名和相关的工作表打包在一个函数中,以便在测试时轻松地将占位符替换为电子邮件地址。以下代码对我来说很好,因为我是经过身份验证的用户:

代码语言:javascript
代码运行次数:0
运行
复制
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";
}
EN

回答 1

Stack Overflow用户

发布于 2019-06-13 16:17:03

去过那里,伙计。如果我正确理解您的问题,您希望您的webapp能够检测用户ID并允许他们从其中读取数据,在某些情况下还允许他们将数据存储到其中。

您的回答是,您需要再次发布您的webapp与RunAs:我。这样,您仍然能够捕获用户is,允许它们读取数据和写入数据,而无需在您访问webApp时直接编辑访问您的电子表格。干杯!!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56582496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档