注意:如果您只是要从Google Sheets文档中读取数据,而不编辑或写入数据到文档,您可以跳过创建服务帐户的过程。唯一的要求是Google Sheets文档的共享设置允许任何拥有链接的人读取文档。
创建服务帐户
在本教程中,我们将创建一个服务帐户,这是一个用于与特定软件或服务交互的用户帐户。在我们的情况下,这个特定的软件就是Google Sheets API。然后您可以将此服务帐户重用于使用App Inventor制作的其他应用程序。
1. 创建Google开发者帐户
使用Google Sheets API的第一步是创建一个Google开发者帐户。Google开发者帐户是一个激活了使用开发者工具的Google帐户,因此如果您还没有这样做,请先导航到https://www.google.com 并创建一个Google帐户。完成后,导航到https://developers.google.com 并登录您想要的Google帐户。这不需要是拥有您打算使用的Google Sheets的Google帐户。
2. 创建Google开发者项目
我们的下一步是创建一个编码项目。登录您的Google开发者帐户后,导航到https://console.developers.google.com/。如果这是您第一次使用Google开发者帐户,系统会提示您同意服务条款。勾选复选框并继续。
接下来,您将进入开发者仪表板。如果您之前没有创建过项目,可以通过选择[CREATE PROJECT]来创建您的第一个项目。
如果您使用的是现有的开发者帐户并且已经有项目,您将位于项目的仪表板上。要创建新项目,请单击网页顶部的下拉菜单。
在弹出菜单的顶部,选择NEW PROJECT。
在创建页面上,为项目命名。在本教程中,我们将其命名为”App Inventor”。我们不需要提供组织,因此将其保留为No organization。
单击”Create”完成项目创建。
3. 启用Google Sheets API
下一步是为您的项目启用Google Sheets API。单击APIs & Services旁边的”+ Enable APIs and Services”按钮。
在搜索栏中输入”Google Sheets API”并选择出现的API。然后单击API库的Enable按钮。
4. 创建服务帐户
现在我们已经为此项目启用了Google Sheets API,我们想要创建一个服务帐户。简单来说,这个服务帐户看起来很像一个Google电子邮件帐户。选择Google Sheets API的”Enable”按钮后,您将被发送到项目中Google Sheets API的概述选项卡。在屏幕右侧,单击”Create Credentials”开始创建服务帐户。
在下一页上,我们会看到一个指南,将询问有关我们正在制作的项目类型的各种问题。在”Which API are you using?”下的第一个下拉菜单中,选择Google Sheets API。
选择后,下面会出现一个后续问题。在”Where will you be calling the API from?”问题下,选择Other UI。最后,在您将访问什么数据下,选择Application Data。
输入上述信息后,单击标有”What credentials do I need?”的蓝色按钮。这将带您进入创建凭据的第二部分。这部分将允许您自定义服务帐户,应该看起来像下图。
服务帐户的名称不重要。在本教程中,我将其命名为”example-service”。然后将角色设置为Selecting Project > Editor,这应该为此服务帐户提供足够的权限。确保保存标有Service Account ID的框中的全部文本。您应该注意到这看起来很像电子邮件地址。您需要将此服务帐户ID复制到某个地方,以便我们稍后使用。
在按”Continue”之前,确保”JSON”在Key Type下被选中,如上所示。这将下载一个名为”AppInventor-####.json”的JSON文件。
使用Google Sheets API组件时,我们将上传此json文件以正常工作。请确保妥善保管此JSON文件!
链接Google Sheets文档
现在我们已经创建了一个服务帐户,我们希望为服务帐户提供对我们将要读取的Google Sheets文件的访问权限。
1. 创建Google Sheets文档
第一步,如果您还没有,是创建一个Google Sheets文档。Google Sheets文档的名称可以是您想要的任何名称。如果您已经有想要使用的Google Sheets文件,那么只需转到您的Google Drive并导航到您想要创建文档的任何位置。然后单击New并选择New Sheet。
2. 共享Google Sheets文档
创建了想要使用的Google Sheets文件后,您只需将Google Sheets文件与我们之前保存的服务帐户电子邮件共享。这将为服务帐户提供您需要的权限。您可以通过在Viewer和Editor之间更改权限来指定服务帐户是只能读取数据还是可以读取和写入数据。
3. 记录相关信息
最后,有一些关于Google Sheets文档的信息需要记录,以便正确访问文件。您也可以使用此部分说明作为以后查找信息的参考。
您可以在此处阅读有关这些术语的更多信息:here。
电子表格ID
电子表格ID可以在Google Sheets文档的URL中找到。Google Sheets文档的URL通常采用以下形式:
https://docs.google.com/spreadsheets/d/
电子表格ID对应于Google Sheets文件的ID。
工作表名称
电子表格中有单独的工作表,每个工作表都有唯一的标题和ID号。在此组件中,页面的标题称为sheetName。
单个电子表格文档可以有多个页面。默认情况下,当您创建新的Google Sheets文档时,电子表格有一个名为”Sheet1”的页面。您可以在屏幕左下角的选项卡中找到它,如下所示:
您可以通过按”+”符号向文档添加新页面。这样做将在Sheet1旁边创建一个新选项卡,显示Sheet2。
Google Sheets组件中的每个块都会要求您指定要从中读取或编辑的页面的标题(或”Sheet Name”)。例如,如果我想编辑Sheet2上的值,那么我将在sheetName插槽中提供文本”Sheet2”。
此外,您可以通过右键单击选项卡并单击重命名来将工作表重命名为您想要的任何名称。请注意,这样做需要您在项目中也更改工作表名称以匹配。
网格ID
与工作表名称类似,这用于引用您想要编辑的页面。但是,与工作表名称不同,网格ID不能由用户自定义。某些块要求提供网格ID而不是工作表名称。要查找网格ID,请通过单击选项卡导航到要引用的页面。在URL中,您应该看到末尾应该有”gid=”后跟一个数字。
https://docs.google.com/spreadsheets/d/
调试提示
Unable to resolve host "oauth2.googleapis.com"
如果您收到此错误消息,请仔细检查设备与互联网的连接。这表明Android网络子系统无法解析主机名,因此无法与DNS通信。
Attempt to invoke virtual method … on a null object reference.
如果您收到此错误消息,请仔细检查您是否在设计器属性中链接了凭据。如果您的设计器属性显示”None…”如下图中所示,请单击框并选择从服务帐户设置步骤获得的.json文件。
Unable to parse range: ______
如果您收到此错误消息,可能是您提供的范围有错误。这可能意味着您提供的工作表名称实际上不存在,或者您提供的引用不是有效的A1表示法。要了解有关A1表示法的更多信息,请参阅此参考: https://developers.google.com/sheets/api/guides/concepts#a1_notation