问题标签 [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 投票
1 回答
294 浏览

google-apps-script - 如何开发具有不同阶段/不同 GSuite 帐户的 Google Apps Script Web App?

我想知道在开发 Google Apps Script webapp 时如何有不同的阶段(开发产品)。Afaik 没有什么是开箱即用的,尤其是当您想拥有一个 G Suite 帐户用于开发而另一个用于生产时。

我想出的唯一解决方案是使用Clasp并在两个 GSuite 帐户之间切换clasp logout / login

我的问题是:

  • 这是否有效,或者是否有提到一个 GSuite 帐户在推送到另一个帐户时会中断?
  • 有更好的方法吗?

我认为最好用一个例子来解释它:

我在域 test.mydomain.com 上有一个 Google App Script 项目设置,用户 user@test.mydomain.com

现在我需要用 clasp 将它推送到另一个域 prod.mydomain.com 上的另一个项目(同名)。此项目与我拥有凭据的另一个用户共享。

问题是当我现在使用 clasp 中的用户登录时,我需要先创建一个项目,对吗?但该项目已经存在。那么我该如何处理呢?

0 投票
1 回答
53 浏览

jenkins - 如何在 Jenkins 中配置 google clasp?

我正在通过詹金斯自动化扣推。所以,到目前为止,我已经将 .clasprc.json 设置为 Jenkins 环境变量。卡扣安装在“C:\Users\superuser\AppData\Roaming\npm”中,可通过 cmd 访问。然而,詹金斯并没有意识到这一点。

请帮忙。

0 投票
1 回答
43 浏览

google-apps-script - 使用 clasp 设置命令时,google clasp 中的 Bash 文件显示“未知键:___”?

所以我正在尝试使用 clasp,这样我就可以更新员工时间表上的脚本编辑器,但是它们有多个,所以我希望它们都从一组代码中更新。我编写了一个 Bash 脚本,它应该利用“扣环设置”命令来更新 .clasp.json 文件,以便更新多个文件。

当它运行时,它会遍历每个命令,但会显示“未知键“scriptID””。我认为问题在于它不会重置/更新 .clasp.json 文件,因此它会不断推送到原始 scriptID。我已经查看了 github 上的 clasp,但我仍然对它为什么无法识别密钥感到困惑。

0 投票
2 回答
78 浏览

bash - 扣环列表的输出包含奇怪的字符

0 投票
0 回答
104 浏览

google-apps-script - 无法使用 clasp 部署 Google Apps Script API Executable

我正在使用 clasp 通过 CLI 操作 Google Apps 脚本。
现在我想创建一个新版本并将其部署为 API 可执行文件。
所以我尝试通过参考下面的链接来运行以下命令。
https://developers.google.com/apps-script/guides/clasp

clasp push(-> 可以发现我的本地更改反映在 GAS 项目中。)
clasp version(-> 可以发现新版本已创建)
clasp deploy -V${version num who created in previous command} (-> 似乎没有部署)

然后当我尝试通过 API 运行 GAS 项目时收到以下消息:

是否可以使用该clasp deploy命令部署为 API 可执行文件?
如果可能的话,你能告诉我使用 CLI 部署的正确方法吗?

0 投票
1 回答
972 浏览

unit-testing - 使用 CLASP 测试 GAS 时如何模拟依赖项

背景

我最近了解了CLASP ,并对使用TDD在本地编辑我的Google Apps 脚本(GAS)的可能性感到兴奋。

注意:可能有一种方法可以使用现有的 GAS 编辑器编写测试,但如果可能的话,我更喜欢使用现代编辑器

clasp 效果很好,但我不知道如何模拟单元测试的依赖项(主要通过jest,尽管我很高兴使用任何有效的工具)

  • 我通过使用gas-local包走得最远,并且能够在测试中模拟单个依赖 项
    • 但是我找不到在单个测试/调用中模拟多个依赖项的方法,所以我创建了这个问题

挑战

尽管安装了@types/google-apps-script,但我不清楚如何分别使用 ES5 或 ES2015 语法“要求”或“导入”Google Apps 脚本模块——请参阅下面的说明。

相关 StackOverflow 帖子

尽管这里有一个关于单元测试的类似 SO 问题但大多数内容/评论似乎来自 pre-clasp 时代,我在跟进剩余线索时无法找到解决方案。(当然,我未经训练的眼睛很可能错过了什么!)。

尝试

使用气体局部

正如我上面提到的,在使用 gas-local 时尝试模拟多个依赖项后,我创建了一个问题(参见上面的链接)。我的配置类似于jest.mock我在下面描述的测试,但值得注意的是以下差异:

  • 我使用 ES5 语法进行gas-local测试
  • 我的包配置可能略有不同

使用 jest.mock

LedgerScripts.test.js

LedgerScripts.js

结果(运行jest命令后)

作为参考,如果我转到google-apps-script.spreadsheet.d.ts具有所需类型的文件,我会在文件顶部看到以下声明...

...和文件底部的这个:

所以也许我只是导入SpreadsheetApp不正确?

其它文件

jest.config.js

babel.config.js

包.json

0 投票
0 回答
68 浏览

google-apps-script - 如何在 Google App Script 中运行 Google Docs 插件?

有一个很棒的 Google Docs 附加代码块,可以突出显示代码块。不幸的是,尽管有隐私政策,但由于安全/隐私问题,我无法在公司的文档中使用它。相反,我想分叉它并在我们自己的 Google App Script 帐户中运行。我试图创建一个新项目并将分叉的代码推送给它但没有成功。使用该代码实现运行插件的分​​步说明是什么?

创建一个新的独立 App Script 项目,构建代码并将其推送到它会导致以下错误

在 App Script 网页上打开项目时,在项目中找不到这些文件。它只有默认的 Code.gs 占位符文件。我什至不知道在哪里寻找问题。

更新:

感谢评论中的 Oleg,添加了.claspignore允许将其推送到 Apps Script 但在 Google Docs 中运行测试导致错误

所有文件现在都在dist/文件夹中,所以可能因此找不到它们?我是否错过了一些配置以正确放置它们?

解决方案:

设置rootDirdist/in.clasp.json解决了这个问题。

0 投票
2 回答
107 浏览

google-apps-script - `clasp` 将 `.gs` 文件放在哪里?对“扣推”上的编译器错误进行故障排除

在本地哪里可以找到生成的.gs文件clasp push

我正在使用clasp push将 TypeScript 文件编译成.gs文件并将其上传到 Apps Script,但出现错误:

错误中的行号是编译后的.gs文件,由于错误而没有上传。我需要找到 .gs 文件的已编译本地副本,以便检查它并修复原始.ts打字稿文件中的错误,但文件在哪里.gs

我的 TypeScript 文件使用tsc.

0 投票
1 回答
342 浏览

node.js - 在 windows 10 上安装后无法识别 clasp

我正在尝试在 win 10 机器上使用 Visual Studio Code 作为 Google Sheets 脚本编辑器。

长话短说,我不会描述我的所有步骤,因为我一开始并没有真正理解我需要什么。即使我想,我也无法做到。

目前的情况是系统无法识别扣环。这些是命令行结果:

C:\Users\XXX\AppData\Roaming\npm\clasp在驱动器 c 上:无法识别根(以及除 之外的任何文件夹 )扣件

我发现的一个建议是将 Windows 用户变量设置如下:

没有帮助。

Windows 上的 npm 相关路径PATH

我试图在上面的文件路径之前PATH添加到以下文件路径

没有帮助

根据这篇文章,npm 实际上安装了两次。对于当前用户C:\Users\XXX\AppData\Roaming\npm和所有用户C:\Program Files\nodejs\npm。也许这就是问题所在。

我想从干净的环境重新开始。

如何卸载本地用户 npm 安装C:\Users\XXX\AppData\Roaming\npm

0 投票
1 回答
99 浏览

google-apps-script - 如何防止 clasp 克隆/拉取“仅查看”Google Apps 脚本项目

我有由“发布者”帐户创建并作为“仅供查看”共享的 Google Apps 脚本项目:

从另一个“消费者”帐户,应该能够:

a) 将项目作为库导入,然后

b) 使用项目端点

当我使用在线编辑器时,一切看起来都很好:

在此处输入图像描述

“制作副本”菜单项已禁用。

“显示清单文件”不显示 appsscript.json


但是,“消费者”帐户可以使用 clasp(带有脚本 ID)来克隆项目、拉取特定版本、下载清单文件、读取项目属性和依赖项等。

注意:我什至创建了“发布者”帐户,以不使用 clasp 作为批准的应用程序。

Q1:我错了,这看起来像“保护系统”可以被扣子绕过?

Q2:这是一个已知的错误/功能/问题,我找不到它,我想投票吗?

Q3:如果你想把Library项目分享给客户,也许你可以做一个“隐藏”业务逻辑的子库项目。看起来 clasp 可以下载顶级共享项目的清单文件,然后所有子库也变得不受保护,清单文件显示它们的脚本 ID。有没有一些标准的方法来完成这样的事情?

谢谢你,很抱歉这么长的帖子。