问题标签 [clasp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
168 浏览

typescript - 将 Typescript 转换为 Google Script 时可以使用 Map 吗?

我正在尝试clasp根据官方建议使用。这是我的tsconfig.json

这是我尝试使用以下方式推送到 Google Apps 脚本项目的示例代码clasp push

它是这样被转译的:

在 Google Apps 脚本项目上运行该方法时,出现错误: ReferenceError: "Map" is not defined. (line 5, file "test")

据我了解,Google Apps 脚本应该提供Map,因为它是esnext. 我究竟做错了什么?为什么Map不可用?

0 投票
1 回答
874 浏览

node.js - Clasp 登录失败:“检索访问令牌时出错...”

我正在尝试在我的 Windows 10 PC 上为 Google Apps 脚本设置 Clasp。当我尝试通过命令行 ( clasp login) 登录时,会打开一个浏览器选项卡,让我登录到 google。之后,我被重定向到的网页显示身份验证成功;但是命令行显示:

Error retrieving access token: FetchError: request to https://oauth2.googleapis.com/token failed, reason: unable to verify the first certificate

有谁知道这可能是什么原因以及我该如何解决?

我不认为这是一个网络问题,因为我的树莓派和 mac 都通过了很好的身份验证。我尝试使用clasp login --no-localhost无济于事,更改网络浏览器似乎也无济于事。删除/重新安装节点和 npm 没有改变。

我还禁用了我的防火墙和实时扫描,什么都没有。

我所期待的:

我得到了什么:

0 投票
1 回答
252 浏览

google-apps-script - 由于“应用程序脚本托管项目”而缺少 Cloud Platform 项目 ID

我有一个 Apps Script 项目,我正在开发并通过 Clasp 推送更新,我想在终端中设置 clasp stackdriver 日志记录。为此,我需要脚本的项目 ID,但我找不到。

在脚本编辑器中,我导航到 Resource -> Cloud Platform project.. 我刚收到以下消息,ID 应该是:“这个脚本有一个 Apps Script-managed Cloud Platform 项目。”

0 投票
0 回答
475 浏览

google-apps-script - 如何从命令行传递谷歌登录凭据以扣住登录?

我想将凭据与 clasp 登录命令一起传递,因此我不需要在使用 clasp 登录时显式输入凭据并提供授权。

我尝试将带有 clientId 的 google 的 OAuth 凭据文件保存到我将使用 clasp 登录的根文件夹中。

我使用了以下命令

creds.json 是包含 OAuth 客户端数据的文件

但是当我运行这个命令时它仍然打开谷歌的登录页面

0 投票
1 回答
551 浏览

google-apps-script - 使用 clasp 运行 Google Apps 脚本的默认项目

根据https://github.com/google/clasp/blob/master/docs/run.md您必须创建一个 GCP 项目才能使用clasp run.

是否可以使用clasp run为 Google Apps 脚本项目自动创建的默认项目?

我们公司使用 G-Suite,但我们无权创建 GCP 项目——我们通过在 GAS 中创建的默认项目来完成所有工作。

我希望能够使用本地开发和运行 Google Apps 脚本代码,clasp run但不知道如何让它与默认项目一起使用。

0 投票
1 回答
723 浏览

google-apps-script - Google Apps 脚本和 Cloudbuild CI 登录

因此,我非常难以通过 Google 的 Cloudbuild 获得一个 Google Apps 脚本项目来使用 Clasp 推送和部署。所以推送和部署命令来自谷歌的 Clasp cli,它要求你使用你的谷歌凭据登录clasp login。登录将在您的主目录中创建一个~/.clasprc.json使用您的凭据调用的文件。这是推送和部署所必需的。在cloudbuild.yaml我创建了一个调用_CLASPRC来保存这个文件的内容的替换,并在运行构建时使用我自己的自定义映像将其写入容器。

现在对于这个问题,当 push 命令运行时,我得到下面的错误,这基本上不是一种非常有用的方式,表示我没有登录或.clasprc.json. 由于这是我遇到的唯一错误,无论问题是什么,这个问题有点难以调试。

我尝试将其.clasprc.json放在主目录和项目目录中,但两种方式都遇到了同样的问题。我很确定该文件已写入项目目录,因为当我尝试在本地运行时没有.clasp.json它抱怨它在抱怨我没有登录之前丢失了。当它在.clasp.json那里时它只会抱怨我没有登录在。

该项目只是我的一个个人项目,它在 Github 上都是开源的,所以如果您想参考实际代码,这里是实际项目的链接。我的 Lil Admin和我使用的构建器My Builders。但是,您确实不需要该项目,请按照以下步骤在您的本地进行重现。

  1. 确保创建了 GCP 项目并启用了 Apps Script API的gcloud cli
  2. 有扣子clinpm install -g @google/clasp
  3. clasp login.clasprc.json使用 GCP获取和身份验证
  4. clasp create --title "My Script" --type webapp并记下 Scripts ID
  5. 将应用程序脚本项目与您的 GCP 项目相关联

以下步骤是导致问题的文件。只需将它们添加到创建的 clasp 项目中。6. 这是我的 Clasp Builder Image 的入口点:

builder/clasp_ci.sh

  1. 建设者 dockerfile

builder/Dockerfile

  1. 现在 cloudbuild 来推动 clasp builder

builder/cloudbuild.yaml

  1. 我用于应用程序脚本项目的 cloudbuild ci。如果您要创建一个新项目,则不需要构建步骤,也不需要and步骤dir中的键。这对于上面我的项目链接中的项目非常具体。pushdeploy

cloudbuild.yaml

  1. 这是加载构建器的命令。确保替换yourproject为您的实际项目 ID。
  1. 最终得到错误的命令。确保替换yourproject为您的实际项目 ID 和your_script_id您在步骤 4 中记下的实际脚本 ID。

我也尝试过使用通过 OAuth 登录创建的凭据,但我得到了同样的错误。但是,这可能有助于解决问题。使用 OAuth 运行 Clasp 的文档

希望有人可以帮助我完成这项工作。如果是这样,这将是第一个使用 Apps Script 和 Clasp 的 Cloudbuild CI 在线文档,因为我在任何地方都找不到这样做的人。我找到了一些使用 travis 和 jenkins 的链接,但由于某种原因他们正在做的事情不起作用。有谁看到我不是什么东西?我在这里错过了什么?!?!

其他一些相关或从未解决的问题:

0 投票
1 回答
570 浏览

google-apps-script - 如何在谷歌脚本编辑器中折叠代码

有谁知道如何在谷歌应用脚​​本编辑器中折叠代码?

在在线编辑器中阅读/调试长代码非常困难。

我在谷歌上进行了一些搜索,但找不到与此问题相关的任何结果。

0 投票
0 回答
1964 浏览

javascript - 如何在带有 Clasp 的 Google Apps 脚本中使用 Axios/Fetch?

设置

目标

我开始开发侧边栏和初始功能,一切都很好。现在我想使用 Rest API 并能够在 Node.js 以及我正在构建的 Google Sheets Addon 中使用输出。

我理解以下前提:

  • 节点不支持 UrlFetchApp.fetch
  • GAS 不支持原生获取(由于缺少 window 和 dom 对象)

所以我决定测试一下

  • babel-polyfill(这似乎可以自己正常工作)
  • axios(导致问题)

用于处理 Promise,以便在节点中进行原型设计,同时在浏览器中获得相同的结果。

挑战

在节点内,一切都按预期工作,但是一旦我添加

在我的项目中的任何 .js 文件中,我在尝试通过 Clasp 推送代码时收到以下错误。

抛出错误的给定行是module.exports.default = axios;

一旦我注释掉这一行,Clasp push 就可以工作了,但是 axios 不能在 GAS 环境中工作。(我也尝试过 Fetch Polyfills(如交叉提取)但遇到了同样的问题)

任何关于如何实现我的目标的想法将不胜感激!

0 投票
1 回答
652 浏览

google-apps-script - 使用 .clasp.json 将 git repo 与 Apps Script 项目相关联

我想使用clasp在本地开发 Apps Script 项目。Clasp 有一个内置的克隆方法,它通过 ID 获取项目并将代码拉入本地目录。这也会创建一个.clasp.json包含一些项目设置的文件。

问题是我的代码已经在 Git 存储库中,所以我想知道在本地获取代码的最佳方法是什么。这两种方法有区别吗?

  • 克隆git并编辑.clasp.json以指向正确的项目 ID
  • 克隆,clasp然后git init是 repo 并手动设置远程 URL

……或者没关系?

0 投票
3 回答
328 浏览

google-apps-script - 无法从 npm 或 yarn 脚本运行 Clasp

我有一个 Google Apps 脚本项目,我正在尝试clasp push从 npm 或 yarn 脚本运行。我可以从命令行运行clasp push,但相同的命令在用作脚本时会失败:

当作为npm run pushor运行时yarn push,脚本将失败并显示输出> Did you provide the correct scriptId?。如果我clasp push直接在命令行上运行,它会成功地将我的项目文件推送到 Google Apps 脚本。

我已验证脚本在包含 .clasprc.json 和 appsscript.json 的同一目录中执行。这是完整的输出:

对于上下文,我正在尝试做类似于这篇博文的事情:https ://labs.clio.com/a-modern-gmail-add-on-build-process-3dd7aad111f5