将数据从您的Java应用程序推到Google表
#java #vaadin #nps #googlesheets

previous article解释了如何制作可重复使用的NPS feedback component。写这篇文章后,我对组件进行了一些调整:

  • 按钮的正方形样式
  • 可自定义的文本

这些是使组件可在任何应用中使用的好补充

Image description

将电子表格用于NPS反馈

当您大声说那个时,这不是那么明显吗?毕竟,收集此类用户反馈的人也熟悉电子表格。让我们让他们简单。

对于此NPS应用程序的范围,我使用了Google表,这比编程更重要。电子表格布局非常简单:时间戳,匿名用户ID和NPS分数列。我还添加了一个“反馈”列以进行未来的改进。

创建Google服务帐户

这是您在Google Cloud中必须执行的配置部分。服务帐户是用户帐户的特定应用程序。为访问Google表的创建一个:

  • 选择或创建一个新项目,并在没有其他角色或权限的情况下添加新的Service Account
  • 转到“管理密钥”,单击“添加密钥”,然后创建并下载新的服务帐户身份验证JSON密钥。将其存储在代码存储库之外的安全性。
  • 启用该项目的Google Sheets API

Image description

授权服务帐户访问您的工作表

现在您已经设置了服务帐户,我们可以让其访问您创建的文档:
复制您服务帐户的电子邮件。它是像“ app-name@project-name-123456.iam.gserviceaccount.com
这样的人 在您的NPS电子表格中授予此帐户的授予编辑者。

Image description

库和代码

我们回到了IDE。一个服务帐户和电子表格已创建。是时候从您的应用程序代码访问它们了。

构建新功能时,我喜欢从“写我喜欢的代码”开始。这有助于我设计用例的API。在这种情况下,我从ValueChangeListener中的以下内容开始:

String userId = "" + UI.getCurrent().hashCode(); // for testing only
int npsScore =  e.getValue(); // User fee
FeedbackSheet sheet = new FeedbackSheet();
sheet.append(userId, npsScore);

因此,大多数实施将用于FeedbackSheet.java。从逻辑上讲,它可以完成以下操作:
从JSON文件读取ServiceAccountCredentials
创建一个Sheets实例来运行指定表的授权操作。
append方法在第一张纸上添加了新行。

这是代码部分。为了完成这项工作,您需要在pom.xml中添加几个依赖项。他们是Google Java库,用于Google表,OAAUTH2和JSON解析:

<dependency>
    <groupId>com.google.apis</groupId>
    <artifactId>google-api-services-sheets</artifactId>
    <version>v4-rev612-1.25.0</version>
</dependency>    
<dependency>
    <groupId>com.google.auth</groupId>
    <artifactId>google-auth-library-oauth2-http</artifactId>
    <version>1.19.0</version>
</dependency>
<dependency>
    <groupId>com.google.http-client</groupId>
    <artifactId>google-http-client-gson</artifactId>
    <version>1.43.3</version>
</dependency>

发现和结论

使用Google表存储数据是可管理数量的Java代码 - 一旦找到它。像this one from Baeldung这样的好文章有一些好的文章,但是获得与配置匹配的代码需要一些工作。另外,Google Cloud是一件生物。我在2023年发现了许多其他文章。

我在这里使用它的方式具有电子表格所有者授予和撤销对应用程序的访问权限的好处,但是它不提供任何需要[OAuth同意对话框(https://developers.google.com/sheets/api/quickstart/java#configure_the_oauth_consent_screen)的奇特模仿可能性。

如果您想在本地尝试,则在Google表格中在Github和the sample feedback spreadsheet中找到sample code