Google Sheet Bespoke报告:过滤器&隐私

时间:2017-02-09 16:21:10

标签: google-apps-script google-sheets report reporting google-sheets-api

我寻求一种方法,根据通过网址输入或传输的某些ID,我可以为用户提供定制的Google表格信息中心。

解释:截至目前,原始数据位于主Google表格中,并在另一个Google表格信息中心中进行处理和汇总,该信息中心需要输入ID作为原始数据的过滤器,以便摘要仅显示相关的洞察使用该特定ID和用户 - 可行。

但是,每个用户只应输入他们的ID并查看他们的摘要。现在所有用户都可以访问相同的公共工作表,并且存在并行访问的可能性。

如何生成基于模板的单个表格(每个用户一个)? 这可以使用默认功能或Apps脚本吗?任何建议都非常感谢,谢谢!

1 个答案:

答案 0 :(得分:0)

这是您可以尝试的一个选项,您可以获取打开Goog​​le电子表格的用户的电子邮件ID,如下所示:

function onOpen(){
   var ui = SpreadsheetApp.getUi();
 var response = ui.prompt('Get ID:');

 // Process the user's response.
 if (response.getSelectedButton() == ui.Button.OK) {
   var id =  response.getResponseText();
   var ss = SpreadsheetApp.getActive()
   var lookupSheet = ss.getSheetByName(id)
   if(lookupSheet == null){
     var template = ss.getSheetByName("Template")
     var newSheet = template.copyTo(ss)
     newSheet.setName(id)
     newSheet.getRange(1,1).setValue(id)
     newSheet.activate()
   } else
   {
    lookupSheet.activate 
   }
 } else {
   Logger.log('The user clicked the close button in the dialog\'s title bar.');
 }
}

注意:使用Session.getEffectiveUser()几乎没有细微差别。根据权限和安全设置,它可以为您提供空白的用户/电子邮件。 https://developers.google.com/apps-script/reference/base/session#getActiveUser()

第二种选择: 如果电子邮件ID不是一个选项,并且您可以输入ID来访问数据。此代码将询问ID并创建名为template的工作表副本,并将A1的值设置为ID。然后,工作表可以使用ID获取ID特定数据并制作图表。

Try
  Dim SmtpServer As New System.Net.Mail.SmtpClient()

  SmtpServer.UseDefaultCredentials = true
  SmtpServer.Port = 25
  SmtpServer.Host = "csnavigateurs-qc-ca.mail.protection.outlook.com"

  Dim mail As New MailMessage()
  mail.From = "si@csnavigateurs.qc.ca"
  mail.To.Add("pelletiera77@csnavigateurs.qc.ca")
  mail.Subject = "Email Sending"
  mail.Body = "Testing the 1 and 2"
  SmtpServer.Send(mail)
  Response.Write("Success")
Catch ex As Exception
  Response.Write(ex.Message)
End Try

可在此处找到此示例:https://docs.google.com/spreadsheets/d/1RPHUGKi7u9jJVc-3xCaYlrZ8kaHWvpl6gPZxUL1g32Y/edit?usp=sharing

注意:人们可以看到彼此的表格,我根据你的帖子假设不是问题。但是,如果不是这种情况,最好的选择是使用谷歌Web应用程序脚本。