问题标签 [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 回答
81 浏览

typescript - 我可以向 Clasp 项目添加运行时依赖项吗?

我想开发一些小脚本来增强 Google 表格。Clasp 让我可以轻松地在本地开发脚本,编译 TypeScript,然后将它们推送到 Google Script 环境中。到目前为止,非常好。

我想使用 Ramda,这样我就可以在我的项目中进行一些函数式编程。有没有办法可以将这个和其他一些依赖项添加到我的项目中?

如果我想使用 Jest 或某种测试库怎么办?这可以做到吗?

0 投票
1 回答
130 浏览

javascript - 为什么忽略库上设置的“developmentMode”标志?

我有一个随机发生的问题(还没有真正设法弄清楚如何重现这个问题,它发生的不规律)与开发模式根本不起作用的 GAS 库。

无论库中保存文件的实际状态如何,始终加载库的静态版本。清单文件是有序的,我在两个帐户(A 和 B)上有两个脚本,它们使用库 C 作为资源。

脚本 A 清单:

脚本 B 清单:

该库处于静态版本 33,具有数十处更改并在静态版本之后保存。我希望脚本 A 加载最新的更改,但它与脚本 B 一样静态。

我不知道发生了什么事。

如果这很重要,我正在使用 clasp 进行同步。如果我放弃 clasp 并使用内置编辑器来做所有事情,在手动保存新版本、进行一些编辑然后加载脚本 A 之后,它似乎神奇地开始在开发模式下工作。

之后使用 clasp (甚至从命令行创建更新的静态版本)将工作一段时间,然后随机停止。clasp version稍后随机时间的一个随机命令会将库冻结在新创建的静态版本,随后clasp push将完成,文件同步,但将停止执行开发模式(即使它处于打开状态)。

这意味着 clasp 没有正确同步,但事实并非如此 - 在浏览器编辑器中打开脚本显示所有文件都已正确同步、保存,并显示静态版本之后的更改,“开发模式”切换如下相应的清单文件。


经过进一步分析,我怀疑这可能与谷歌的缓存服务器有关?在这种情况下:同一张电子表格,两个不同 Google 帐户的两个用户在开发模式下访问库,一个是实际看到开发,另一个是静态的。清除本地浏览器缓存和应用数据无济于事,因此必须在交付端。

谷歌在更新所有用户和所有使用该库的项目的开发版本时出现延迟,也许吧?

概括

是什么让库 START 再次在开发模式下工作?

在浏览器编辑器中打开库并手动保存新版本。有时必须多次执行才能工作。

是什么让库停止在开发模式下工作?

据我所知clasp version但并非总是如此。昨天我从命令行保存了 5-6 个带有“clasp 版本”的版本,后续clasp push命令确实出现在开发模式下。clasp version破坏东西的是随机的Nth 。

0 投票
1 回答
46 浏览

google-apps-script - fileExtension 配置选项的全局设置

是否可以创建全局配置设置?例如,我希望我的所有扣拉/克隆命令都使用.js. 我知道我可以通过在项目目录中设置fileExtension属性来做到这一点,.clasp.json但是我必须为每个文件设置它。是否可以在某个地方全局设置它,比如在.clasprc.json文件中?

0 投票
1 回答
256 浏览

google-app-engine - 扣子抛出'语法错误:缺失; before 声明'关于包括大多数节点库

我正在尝试解析 HTML 和 XML 元素,为此我包含了流行的库,例如 Cheerio 和 node-html-parser,但是在包含它们时 clasp throws Syntax error: Missing ; 在声明错误之前,我似乎无法找到解决方法。

第 9175 行的代码:

0 投票
1 回答
648 浏览

typescript - Google AppScript 项目中的 TypeScript 类顺序

假设我们在 2 个单独的文件中有 2 个简单的 TypeScript 类:

  • B.ts:
  • C.ts
  • 并在 Code.ts 中调用代码:

使用卡扣推动后一切正常

但是如果我将 C.ts 文件的名称更改为 AA.ts,我会收到错误消息:

TypeError: Cannot read property "prototype" from undefined. (row 14, file „AA”).

如果我不在 Code.ts 中实例化 ItemType 类,问题甚至会存在。

ts2gas 似乎在代码转译过程中没有考虑extends关键字,并将输出的 gs 文件设置为对应的 ts 文件顺序。因此,如果我们在扩展类文件之前命名扩展类文件(按字母顺序),我们会得到一个错误。

在开发过程中我是否必须注意 ts 文件名的正确顺序?我是否必须附加某种机制来处理 gs 文件加载顺序?当 gs 文件已经被转译时,这对我来说似乎是多余的。转译过程 (ts2gas) 应该注意以 TypeScript 方式使用的适当的类扩展策略。如果 ts2gas 可以使用原型将 TypeScript 类转换为 JS OOP,为什么它不能正确处理类扩展?

我想有一些更简单更好的方法。

0 投票
1 回答
610 浏览

google-apps-script - 如何在 Apps Script 中优雅地协作?

所以我在一个由 2-3 名开发人员组成的团队中,他们将主要使用连接到 Google 表格的 Apps 脚本。

我研究了各种工具/工作流程,但似乎没有优雅的方式让两个人同时处理同一个 Apps 脚本文件:

  • 如果两个人都在在线编辑器上编辑同一个文件并保存他们的更改,则只有一组更改被保留,另一组更改被覆盖。这是有道理的,但我希望在多个编辑器处理同一个文件时获得类似 Google 文档的体验。
  • 本地开发和版本控制git也不是一个很好的选择,因为迭代地进行更改和测试这些更改需要它在云上(因为我们的谷歌表格依赖)。您无法在本地进行更改并测试以查看这些更改的效果,而无需clasp push每次调用​​,然后在云上的原生 Apps Script GUI 中运行代码。
  • 我已经非常彻底地阅读了 Apps 脚本文档(部署、版本控制、协作等),但没有什么能作为解决这个问题的优雅解决方案(似乎总结了“使用共享的 Google 云端硬盘”和“使用git”......) .

我很好奇是否有人有使用 App Script 在团队环境中工作的经验,以及最终使用了哪些工作流程。团队如何让 2 个人以上处理同一个文件,同时又允许快速迭代而无需调用clasp pull/push每次迭代的摩擦?还是这是不可避免的?

0 投票
0 回答
483 浏览

google-apps-script - 谷歌表:扣推命令失败

我正在尝试使用以下命令将 Google App Scripts 代码推送到云

但它失败并出现以下错误。

当我只推送几个文件时它可以工作,所以我不知道它是否与存储限制或任何其他问题有关。

编辑:

我尝试将文件直接添加到 google app 脚本项目,然后在最后一个文件中遇到以下错误:

如果存储有问题,请告诉我。

任何帮助都会很棒。

谢谢。

0 投票
0 回答
205 浏览

javascript - 在本地编译 Google App Script 的工具

我正在开发一个使用 JavaScript 框架并使用 clasp 将文件推送到谷歌驱动器的工作表。

问题是某些 JavaScript 代码的 clasp push 命令失败,只需说:

我认为 App 脚本不允许某些 JavaScript 代码。

所以我正在寻找一种工具,它可以编译 JavaScript 代码和 Google App 脚本代码,并指出异常的确切位置或至少是异常的原因。

任何帮助都会很棒。

谢谢。

0 投票
1 回答
1172 浏览

google-apps-script - CLASP 本地登录

我试图弄清楚如何为我的谷歌脚本项目设置一个本地登录文件,以便设置它,以便它可以在自动部署过程中工作。

据我所知,clasp login将在您的主目录中创建一个文件,该文件通过 scripts.google.com 对您进行身份验证,但该文件不适用于本地登录,因为它缺少一些属性,如“project_id”。

在寻找如何创建要运行的文件时,clasp login --creds {file}似乎没有一种直接的方法可以在本地目录中生成其中一个文件,这就是我想设置我的部署管道的方式。

互联网上的大多数文档都说您可以通过导航到 GCP 项目并导出服务帐户 json 文件来创建自己的文件,但我不知道如何判断我的 google 脚本项目与哪个 GCP 项目相关联。

我非常迷茫,任何帮助将不胜感激。

谢谢,
亚历克斯

0 投票
1 回答
111 浏览

google-apps-script - 如何调试 Google 表格扩展插件:没有出现设置选项

我们有一个作为插件部署的 Google 表格扩展。它有效。这是我正在谈论的配置屏幕的图片(以消除 Chrome 插件等之间的歧义):

我们的部署屏幕截图

我们部署的有效版本是 12 版。但是,当我们尝试部署新版本时,它不起作用。具体来说:

  • 我们使用 clasp 创建一个新版本
  • 我们使用上面的屏幕并保持脚本 ID 相同但将版本更改为新版本
  • 我们点击保存
  • 我们转到电子表格,插件像以前一样显示为附加组件,但除了“帮助”之外没有其他菜单。
  • 日志显示调用了 onOpen,但没有与之关联的日志(即使我们将 Logger.log 消息放入 onOpen:

我们的日志屏幕截图

即使我们使用 Clasp 下拉版本 12(有效的版本)并将其部署为新版本,也会发生这种情况。

有人知道如何进行调试吗?似乎这些位无关紧要,因为我们正在部署我们确定工作的位。但似乎唯一的配置是配置屏幕的版本字段。