如何在 Python 中使用服务帐户凭据创建 Google 表格?

2023-11-29

我创建Service Account Credentials here并得到 json 密钥service.json.

然后我尝试:

from google.oauth2 import service_account

SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
credentials = service_account.Credentials.from_service_account_file(
        'service.json', scopes=SCOPES)

drive = build('drive', 'v3', credentials=credentials)
file_metadata = {
    'name': 'sampleName',
    'parents': ['#### folderId ###'],
    'mimeType': 'application/vnd.google-apps.spreadsheet',
}
res = drive.files().create(body=file_metadata).execute()
print(res)

有错误:

<HttpError 403 when requesting https://www.googleapis.com/drive/v3/files?alt=json returned "Insufficient Permission: Request had insufficient authentication scopes.">

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "dailyLimitExceededUnreg",
    "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
    "extendedHelp": "https://code.google.com/apis/console"
   }
  ],
  "code": 403,
  "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
 }
}

我发现没有Auth header,我就是匿名的,匿名使用的配额为零。如何设置标头或者此错误的原因是其他原因?

我想要的只是在任何计算机的 gdrive 文件夹中使用 python 创建电子表格,而不需要单击某处来授予访问权限。


  • 您想要使用 Drive API v3 和服务帐户创建新的电子表格。
  • 您想要在 Google 帐户的 Google Drive 的特定文件夹中创建新的电子表格。
  • 您想使用 googleapis 和 python 来实现这一点。
  • 您已经能够使用 Drive API。

如果我的理解是正确的,这个答案怎么样?请将此视为几个可能答案之一。

修改点:

  • 我认为在您的脚本中,需要修改范围才能使用 Drive API 创建文件。在这种情况下,如何使用https://www.googleapis.com/auth/drive?
  • 为了在您的 Google 帐户的 Google Drive 的特定文件夹中创建新的电子表格,首先需要将您的 Google Drive 中的文件夹与服务帐户的电子邮件共享。这样,新的电子表格将使用服务帐户创建到您的 Google 云端硬盘的特定文件夹中。请小心这一点。

修改后的脚本:

当您的脚本修改时,请按如下方式修改。

from googleapiclient.discovery import build  # Added
from google.oauth2 import service_account

SCOPES = ['https://www.googleapis.com/auth/drive']  # Modified
credentials = service_account.Credentials.from_service_account_file('service.json', scopes=SCOPES)

drive = build('drive', 'v3', credentials=credentials)
file_metadata = {
    'name': 'sampleName',
    'parents': ['#### folderId ###'],
    'mimeType': 'application/vnd.google-apps.spreadsheet',
}
res = drive.files().create(body=file_metadata).execute()
print(res)
  • About #### folderId ###,请设置与服务帐号的邮箱共享的文件夹ID。

Note:

  • 如果您想同时使用 Sheets API 和 Drive API,请使用SCOPES = ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/spreadsheets"].
  • In this case, the new Spreadsheet is directly created to the folder in your Google Drive. So you can see it by the browser.
    • 如果在服务帐户的云端硬盘中的文件夹中创建新的电子表格,则需要为您的 Google 帐户创建权限。请小心这一点。在这种情况下,我认为这个线程很有用。

参考:

  • 文件:创建
  • 使用 python 的 Google API 文件权限

如果我误解了你的问题并且这不是你想要的方向,我深表歉意。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Python 中使用服务帐户凭据创建 Google 表格? 的相关文章

  • 带预览和进度栏的 Twitter Bootstrap 图像上传

    我如何使用 Twitter Bootstrap 上传带有预览和进度条的单个图像 目前 在保存图像之前 我看不到上传图像的任何预览或进度条 Jasny 的 Bootstrap 分支让您能够接近这一点 看文档 http jasny github
  • Javascript:在函数内调用函数时 window.location.href 不会重定向

    单击按钮时 window location href 会将浏览器重定向到 stackoverflow com 但在输入文本字段中按 Enter 键时不会将浏览器重定向到 stackoverflow com 尽管两个事件侦听器使用相同的函数
  • iOS:如何实现像Android的startActivityForResult这样的行为

    我是一名 Android 开发人员 正在开发我们应用程序的 iOS 版本 我需要知道如何在 Android 上实现类似于 startActivityForResult 的行为 我需要显示一个新的视图控制器 然后在新的视图控制器关闭时将控制权
  • 使用空的weak_ptr作为参数调用map::count安全吗?

    打电话安全吗map count http www cplusplus com reference map map count on an 未初始化因此为空weak ptr http en cppreference com w cpp mem
  • 将同步 zip 操作转换为异步

    我们有一个现有的库 其中一些方法需要转换为异步方法 但是我不确定如何使用以下方法执行此操作 错误处理已被删除 该方法的目的是压缩文件并将其保存到磁盘 请注意 zip 类不公开任何异步方法 public static bool ZipAndS
  • 扩展Android应用程序类

    当我正在寻找从远程设备获取错误报告的解决方案时 就像 iOS 中的试飞应用程序一样 我发现了acra适用于 Android 设备here http code google com p acra wiki BasicSetup 在基本设置中
  • Turbolinks 访问的页面中缺少 hubspot 聊天界面,但可用于全页面刷新

    我想将 hubspot 聊天界面集成到我的 Rails 4 Turbolinks 应用程序中 我已将 Google 跟踪代码管理器配置为在每个页面加载事件中显示支持聊天界面 该界面工作正常 GTM 标签 自定义 html PROBLEM 当
  • 具有重复值的 Sqlite 列

    就说专栏吧aSQLite 数据库的非常重复 始终有相同的 4 个值 其他值可能稍后出现 但不同值的数量将少于 1000 个 VALUES hello world it s a shame to store this str many tim
  • Haskell:如何创建将函数应用于元组项的最通用函数

    这是一个个人练习 旨在更好地理解 Haskell 类型系统的局限性 我想创建最通用的函数 将某些函数应用于 2 条目元组中的每个条目 例如 applyToTuple fn a b fn a fn b 我试图让这个函数在以下每种情况下都起作用
  • Centos/Linux 将 logrotate 设置为所有日志的最大文件大小

    我们使用 logrotate 并且它每天运行 现在我们遇到了一些情况 日志显着增长 阅读 gigabaytes 并杀死我们的服务器 所以现在我们想为日志设置最大文件大小 我可以将其添加到 logrotate conf 中吗 size 50M
  • IIS 中的 WIX 和证书

    我正在尝试设置我的安装 以便使用 WIX 配置我的站点及其证书 我可以在 IIS 中查看证书并有权访问 cer 文件 这就是我对证书的了解 所以请简化任何答案 即我不知道我的 BinaryKey 是什么 该证书已安装在计算机上 理想情况下
  • 如何从我的 appDelegate 访问我的 viewController? iOS系统

    我有一个在 xCode 中创建为 基于视图的应用程序 的 iOS 应用程序 我只有一个 viewController 但它会自动显示 而且我没有看到任何将它与我的 appDelegate 关联的代码 我需要将数据从 appDelegate
  • Pandas 2 个字段中唯一值的数量

    我正在尝试查找覆盖 2 个字段的唯一值的数量 例如 一个典型的例子是姓氏和名字 我有一个数据框 当我执行以下操作时 我只获取每列的唯一字段数 在本例中为 最后一个 和 第一个 不是复合体 df Last Name First Name nu
  • 如何从Python枚举类中获取所有值?

    我正在使用 Enum4 库创建一个枚举类 如下所示 class Color Enum RED 1 BLUE 2 我要打印 1 2 作为某处的列表 我怎样才能实现这个目标 您可以执行以下操作 e value for e in Color
  • AngularJS 中的全局模拟对象用于 jasmine/karma 测试

    我有一个正在模拟进行单元测试的对象 基本上在我的测试文件中 我将其模拟如下 var mockObject mockMethod1 function return true mockMethod2 function return true b
  • 如何在 Firefox 插件上使用 jQuery 1.5.2+?

    首先 我创建了一个接收参数并返回 jQuery 的函数 例如 function getjQuery window jquery code window return window jQuery 但后来我收到了一封评论电子邮件 他们告诉我必须
  • 在着色器中旋转法线

    我有一个场景 其中有多个具有各自位置和旋转的模型 给定法线 着色器对每个像素应用简单的双向照明 那是我的顶点着色器 version 150 in vec3 position in vec3 normal in vec2 texcoord o
  • 在reactjs中停止超时?

    有没有办法可以杀死 摆脱 reactjs 中的超时 setTimeout function do something bind this 3000 通过某种点击或操作 我希望能够完全停止并结束超时 有没有办法做到这一点 谢谢 假设这种情况发
  • 使用 python/scipy 进行 voronoi 和 lloyd 松弛

    如何使用 Qhull 确定哪些 voronoi 单元 按索引 是 正确的 由 现有顶点 组成 我正在尝试使用 LLoyds 算法和 scipy spatial Voronoi 它是 Qhull 的包装器 生成的输入来执行约束松弛 就代码而言
  • 如何使用javascript取消设置变量? [复制]

    这个问题在这里已经有答案了 这是我到目前为止所尝试的 var nxt I am next window onscroll function var scr this pageYOffset if scr gt 400 console log

随机推荐