java - 无法从谷歌驱动器上的 java 中找到新创建的电子表格
问题描述
我正在尝试使用来自 java 的 google 服务帐户的凭据创建一个电子表格,在执行结束时我得到了一个新创建的电子表格 ID,但是当我打开我的谷歌驱动器时,我没有任何带有新创建的 ID 的工作表。请帮我解决这个问题。
这是我用来创建新工作表的方法:
public static void createSheet() throws IOException {
String title = LocalDateTime.now().toString() ;
Spreadsheet spreadsheet = new Spreadsheet()
.setProperties(new SpreadsheetProperties()
.setTitle(title));
spreadsheet = service.spreadsheets().create(spreadsheet)
.setFields("spreadsheetId")
.execute();
spreadsheetId = spreadsheet.getSpreadsheetId();
System.out.println("Spreadsheet ID: " + spreadsheet.getSpreadsheetId());
}
我也曾尝试通过浏览器访问电子表格 ID,但它要求我提供访问权限。
解决方案
服务帐户不是您。服务帐户是具有自己的 Google Drive 帐户的虚拟用户。
如果您执行 file.list,您会发现新工作表是在服务帐户 Google 驱动器帐户上创建的。
如果您想在自己的帐户上创建它,然后在您的个人驱动器帐户上创建一个目录,与服务帐户共享目录,就像另一个用户简单地获取服务帐户电子邮件地址并以这种方式共享一样。
然后,当您创建工作表时,您需要将提交的父母设置为您希望将其上传到的目录的 id,您可以使用setParents方法将其添加到文件元数据中。
.setProperties(new SpreadsheetProperties()
.setParents(fileid)
.setTitle(title));
如果您想了解有关服务帐户如何工作的更多信息,您可能会发现此视频很有趣。它还准确显示了如何与服务帐户共享文件夹。您是否应该在 2021 年之后使用 Google 服务帐户?
推荐阅读
- javascript - dc.js 可以通过 div id 刷图表参考吗?
- c - 打印二叉搜索树的所有叶节点
- javascript - 以编程方式更改 contenteditable div 的 innerHTML 时出现 Chrome getRangeAt 问题
- python - python将relativedelta应用于日期列
- docker-compose - gitlab runner - 如何缓存图像而不是每次都构建?
- r - R Shiny:如何显示“几乎”所有输入值
- node.js - 剧作家得到饼干
- powerbi - 仅针对选定行的操作功能
- laravel - Laravel 8 和 postgresql
- pandas - Pandas DF 到 Spark DF