问题标签 [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.
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 中的用户登录时,我需要先创建一个项目,对吗?但该项目已经存在。那么我该如何处理呢?
jenkins - 如何在 Jenkins 中配置 google clasp?
我正在通过詹金斯自动化扣推。所以,到目前为止,我已经将 .clasprc.json 设置为 Jenkins 环境变量。卡扣安装在“C:\Users\superuser\AppData\Roaming\npm”中,可通过 cmd 访问。然而,詹金斯并没有意识到这一点。
请帮忙。
google-apps-script - 使用 clasp 设置命令时,google clasp 中的 Bash 文件显示“未知键:___”?
所以我正在尝试使用 clasp,这样我就可以更新员工时间表上的脚本编辑器,但是它们有多个,所以我希望它们都从一组代码中更新。我编写了一个 Bash 脚本,它应该利用“扣环设置”命令来更新 .clasp.json 文件,以便更新多个文件。
当它运行时,它会遍历每个命令,但会显示“未知键“scriptID””。我认为问题在于它不会重置/更新 .clasp.json 文件,因此它会不断推送到原始 scriptID。我已经查看了 github 上的 clasp,但我仍然对它为什么无法识别密钥感到困惑。
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 部署的正确方法吗?
unit-testing - 使用 CLASP 测试 GAS 时如何模拟依赖项
背景
我最近了解了CLASP ,并对使用TDD在本地编辑我的Google Apps 脚本(GAS)的可能性感到兴奋。
注意:可能有一种方法可以使用现有的 GAS 编辑器编写测试,但如果可能的话,我更喜欢使用现代编辑器
clasp 效果很好,但我不知道如何模拟单元测试的依赖项(主要通过jest,尽管我很高兴使用任何有效的工具)
挑战
尽管安装了@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
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/
文件夹中,所以可能因此找不到它们?我是否错过了一些配置以正确放置它们?
解决方案:
设置rootDir
为dist/
in.clasp.json
解决了这个问题。
google-apps-script - `clasp` 将 `.gs` 文件放在哪里?对“扣推”上的编译器错误进行故障排除
在本地哪里可以找到生成的.gs
文件clasp push
?
我正在使用clasp push
将 TypeScript 文件编译成.gs
文件并将其上传到 Apps Script,但出现错误:
错误中的行号是编译后的.gs
文件,由于错误而没有上传。我需要找到 .gs 文件的已编译本地副本,以便检查它并修复原始.ts
打字稿文件中的错误,但文件在哪里.gs
?
我的 TypeScript 文件使用tsc
.
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
?
google-apps-script - 如何防止 clasp 克隆/拉取“仅查看”Google Apps 脚本项目
我有由“发布者”帐户创建并作为“仅供查看”共享的 Google Apps 脚本项目:
从另一个“消费者”帐户,应该能够:
a) 将项目作为库导入,然后
b) 使用项目端点
当我使用在线编辑器时,一切看起来都很好:
“制作副本”菜单项已禁用。
“显示清单文件”不显示 appsscript.json
但是,“消费者”帐户可以使用 clasp(带有脚本 ID)来克隆项目、拉取特定版本、下载清单文件、读取项目属性和依赖项等。
注意:我什至创建了“发布者”帐户,以不使用 clasp 作为批准的应用程序。
Q1:我错了,这看起来像“保护系统”可以被扣子绕过?
Q2:这是一个已知的错误/功能/问题,我找不到它,我想投票吗?
Q3:如果你想把Library项目分享给客户,也许你可以做一个“隐藏”业务逻辑的子库项目。看起来 clasp 可以下载顶级共享项目的清单文件,然后所有子库也变得不受保护,清单文件显示它们的脚本 ID。有没有一些标准的方法来完成这样的事情?
谢谢你,很抱歉这么长的帖子。