小编bea*_*ano的帖子

针对同一脚本的LockService操作过多

我有一个公共插件,该插件利用Google Apps脚本锁定服务来防止在进行写入之前先读取电子表格。

var lock = LockService.getDocumentLock();
var success = lock.tryLock(240000); // 4 minutes
if (!success) {
console.warn('Could not obtain lock after 4 minutes.');
return;
}
//perform some function then release lock
lock.releaseLock();
Run Code Online (Sandbox Code Playgroud)

我继续收到错误消息:

针对同一脚本的LockService操作过多。

最初,我认为此错误是“基于用户的”,并且每个用户的锁定服务操作数可能有一个配额,但是最近我开始发现过去几天中,针对30个以上的用户,此错误出现的频率更高。

每个用户每个脚本的LockService操作是否有限制?

如果是这样,限制是什么?

我没有在Google Apps脚本配额中看到对配额的任何引用

LockService文档中也看不到对配额的任何引用

google-apps-script

7
推荐指数
1
解决办法
2234
查看次数

在 App Engine Python 3.7 中断言应用程序的身份

App Engine 的 Python 2.7 运行时有一种非常方便的方法来向另一个 App Engine 应用程序断言一个应用程序的身份。

如上面的链接所述,使用app_identity包的库google.appengine.api我能够获取并将其插入标头auth_tokenurlfetch。收到请求时,我可以验证X-Appengine-Inbound-Appid标头信息。

据我了解urlfetch,该google.appengine.api包在 Python 3.7 运行时中不可用。

我的应用程序由多个 GAE 项目组成,因此我使用此方法来验证我的项目之间的 api 调用的身份(即,因此我不需要它来用于外部 API/服务)。在 App Engine 的 Python 3.7 运行时中执行此操作的推荐方法是什么?

google-app-engine python-3.7

5
推荐指数
0
解决办法
82
查看次数

使用 Secret Manager 中存储的密钥初始化 Firebase Admin SDK

我正在尝试使用单独的服务帐户(即不是默认服务帐户)在 Cloud Run 应用程序中初始化 Firebase Admin SDK。

文档建议:

import firebase_admin
from firebase_admin import credentials

cred = credentials.Certificate("path/to/serviceAccountKey.json")
firebase_admin.initialize_app(cred)
Run Code Online (Sandbox Code Playgroud)

但是,我想避免将机密打包到 Cloud Run 容器中,因此我从 Secret Manager 检索 json 文件,并尝试创建凭据,并将其传递到: firebase_admin.initialize_app(cred)

import firebase_admin
from google.cloud import secretmanager
from google.oauth2 import service_account

# Create credentials object then initialize the firebase admin client
sec_client = secretmanager.SecretManagerServiceClient()
name = sec_client.secret_version_path(GOOGLE_CLOUD_PROJECT_NUMBER, FIREBASE_SA_SECRET_NAME, "latest")
response = sec_client.access_secret_version(name)
service_account_info = json.loads(response.payload.data.decode('UTF-8'))
creds = service_account.Credentials.from_service_account_info(service_account_info)
firebase_admin.initialize_app(creds)
Run Code Online (Sandbox Code Playgroud)

收到错误:

ValueError:提供了非法的 Firebase 凭据。应用程序必须使用有效的凭证实例进行初始化。

任何提示表示赞赏。

python firebase firebase-admin

4
推荐指数
1
解决办法
5352
查看次数

为“提交表​​单”触发器指定表单

我有两个Google表单,可将​​数据发送到单个电子表格中的两个标签中。

我已经设置了具有两个功能的脚本。我希望第一个函数在提交第一个表单时运行。并且,第二个函数在提交第二个表单时运行。

问题是:在设置触发器onformsubmit时,它不允许您指定哪种形式。

因此,无论何时填写第一个表格,它都会运行两个功能。

问题:如何限制仅在提交特定表单后才能运行的功能?

javascript triggers google-sheets google-apps-script google-forms

3
推荐指数
2
解决办法
4620
查看次数

找不到具有给定 ID 的项目,或者您无权访问它

我有一个需要访问各种 Google 服务的附加组件,并在初始加载时请求以下访问权限:

在此处输入图片说明

我还有一个像我一样运行的网络应用程序(与附加组件相同的谷歌帐户),任何人都可以访问,包括匿名。webapp 尝试访问我认为我应该已经可以访问的表单。

网页应用:

function doGet(){
  var form = FormApp.openById('');
  var formId = form.getId();
  var items = form.getItems();
  return ContentService.createTextOutput("Form contains "+items.length+"items.");
}
Run Code Online (Sandbox Code Playgroud)

错误:

找不到具有给定 ID 的项目,或者您无权访问它。

题:

当加载项最初请求访问用户的云端硬盘时,这是否仅允许访问加载项开发人员的 google 帐户

google-apps-script

3
推荐指数
1
解决办法
1万
查看次数

未配置返回 401 Jwt 颁发者的 Cloud Endpoints

我正在尝试设置服务以提供身份验证服务,以便外部应用程序可以向 Cloud Run 应用程序(在 Cloud Endpoints API 网关后面)发出请求。

我遵循了服务文档之间的 Cloud Endpoints身份验证,但是在尝试访问 Cloud Run 服务时我继续收到以下错误:

401:未配置 Jwt 颁发者

在 openapi 规范中,我设置了端点安全性和 securityDefinition:

/endpoint_1:
  get:
     ...
     security:
       - service_account: []

securityDefinitions:
  service_account:
    authorizationUrl: ""
    flow: "implicit"
    type: "oauth2"
    x-google-issuer: "<service_account_email>"
    x-google-jwks_uri: "https://www.googleapis.com/robot/v1/metadata/x509/<service_account_email>"
    x-google-audiences: "https://<cloud-run-service>-pjcfvhz2qq-uc.a.run.app"
Run Code Online (Sandbox Code Playgroud)

然后使用 ESPv2 Beta 将其部署到 Cloud Run,如Cloud Endpoints 文档所述

部署完所有内容后,我尝试从本地计算机运行以下脚本以生成已签名的 jwt 并向 Cloud Run 服务发出请求:

import os
import json
import time
import requests
import google.auth.crypt
import google.auth.jwt

now = int(time.time())
expiry_length …
Run Code Online (Sandbox Code Playgroud)

python jwt google-cloud-endpoints google-cloud-run

2
推荐指数
1
解决办法
2103
查看次数