我正在尝试使用clasp在本地构建GAS项目
https://github.com/google/clasp
任何本地安装的IDE都是对Google脚本编辑器的巨大改进,因此该工具看起来非常有前景.遗憾的是,GAS服务的自动完成功能似乎不包含在软件包中.
文件说:
Apps Script CLI使用TypeScript在开发时提供自动完成和linting.使用类似Visual Studio Code的IDE进行TypeScript自动完成.
完成所有必需的依赖项后,我仍然无法使用自动完成功能.当我为现有项目执行"clasp pull"命令时,它将".gs"扩展名转换为".js".自动填充建议只是解析现有代码的结果.
例如,如果我在我的代码中的某处调用了sheet.getRange(),那么'getRange()'方法会在建议中弹出,但我不能列出可用的选项,比如,PropertiesService,除非它已经在我的码.
有没有人为Google Apps脚本启用自动填充功能有什么好运?
我想将 Typescript 用于我的 Google Apps Script (GAS) 项目,但我找不到将我的代码编译为 GAS 接受的内容的方法。
GAS 不支持导出,而且 Typescript 似乎不喜欢通过全局范围访问变量(它需要导入/要求,从而导出)。
我正在寻找以下任何一种解决方案,我相信这些解决方案对我有用:
1) Babel 插件或类似的可以删除所有 Import 和 Export 语句及其属性名称(要求我不使用相同的方法名称,我不使用。
所以:
import MyLibrary from './library';
export function greetJohn() { MyLibrary.greet('John'); }
export default { greetJohn }
Run Code Online (Sandbox Code Playgroud)
变成:
function greetJohn() { greet('John'); }
Run Code Online (Sandbox Code Playgroud)
2)更改打字稿,使其可以看到全局范围
3) Babel 插件或类似的将所有 .ts 文件组合成一个 .js 文件并通过将每个文件视为对象/函数来转换导入/导出语句。
因此,我非常困难,但非常接近于通过 Googles Cloudbuild 使用 Clasp 推送和部署 Google Apps Script 项目。因此推送和部署命令来自Googles Clasp cli,它要求您使用clasp login. 登录将在您的主目录中创建一个~/.clasprc.json使用您的凭据调用的文件。这是推送和部署所必需的。在中,cloudbuild.yaml我创建了一个替换_CLASPRC来保存这个文件的内容,并在运行构建时使用我自己的自定义图像将它写入容器。
现在对于这个问题,当 push 命令运行时,我收到以下错误,这基本上不是说我没有登录或.clasprc.json. 由于这是我遇到的唯一错误,无论问题是什么,这个问题有点难以调试。
Could not read API credentials. Are you logged in globally?
Run Code Online (Sandbox Code Playgroud)
我曾尝试将 放在.clasprc.json主目录和项目目录中,但两种方式都遇到相同的问题。我很确定该文件正在写入项目目录,因为当我尝试在我的本地运行时没有.clasp.json它抱怨它在抱怨我没有登录之前丢失了。当.clasp.json它在那里时它只抱怨我没有登录在。
该项目只是我的一个个人项目,它在 Github 上都是开源的,所以如果你想参考实际代码,这里是实际项目的链接。我的 Lil Admin和我使用的构建器My Builders。但是,您确实不需要该项目,请按照以下步骤在本地进行重现。
npm install -g @google/claspclasp login获得.clasprc.json与GCP权威性clasp create --title "My …continuous-integration google-apps-script google-cloud-platform clasp google-cloud-build
我最近了解了CLASP,并对使用TDD在本地编辑我的Google Apps 脚本(GAS)的可能性感到兴奋。
注意:可能有一种方法可以使用现有的 GAS 编辑器编写测试,但如果可能的话,我更愿意使用现代编辑器
clasp 效果很好,但我不知道如何模拟单元测试的依赖项(主要是通过jest,尽管我很高兴使用任何有效的工具)
尽管安装了@types/google-apps-script,但我不清楚如何分别“要求”或“导入”Google Apps Script 模块是使用 ES5 还是 ES2015 语法——请参见下面的说明。
虽然在测试单元中的相似,所以问题在这里,大部分的内容/评论似乎是从预扣时代,我无法在一个解决方案,同时跟进余下的引线到达。(当然,我未经训练的眼睛很可能漏掉了一些东西!)。
正如我上面提到的,在使用 gas-local 时尝试模拟多个依赖项后,我创建了一个问题(见上面的链接)。我的配置类似于jest.mock我在下面描述的测试,但值得注意的是以下差异:
gas-local测试LedgerScripts.test.js
import { getSummaryHTML } from "./LedgerScripts.js";
import { SpreadsheetApp } from '../node_modules/@types/google-apps-script/google-apps-script.spreadsheet';
test('test a thing', () => {
jest.mock('SpreadSheetApp', () => {
return jest.fn().mockImplementation(() …Run Code Online (Sandbox Code Playgroud) 我需要像访问 Logger 日志一样访问 Execution Transcripts。例如,我可以Logger.log使用getLogs(). 如何以类似的方式访问执行脚本?
我将 VS Code 与 clasp 结合使用以在 Google Apps Script 中进行开发。
在or标签内使用scriptlet会干扰 VS Codes 语法突出显示:<script><style>

此外,我经常收到 html-language-server 错误。
有没有办法解决这个问题?
一个设置可能会教 VS Code 我做什么很好?
因此,我所在的团队由 2-3 名开发人员组成,他们将主要使用连接到 Google 表格的 Apps 脚本。
我研究了各种工具/工作流程,但似乎没有一种优雅的方式让两个人同时处理同一个 Apps 脚本文件:
git也不是一个很好的选择,因为迭代地进行更改并测试这些更改需要它在云上(因为我们依赖 Google Sheets)。您无法在本地进行更改并测试以查看这些更改的效果,除非clasp push每次都进行调用,然后在云上的本机 Apps 脚本 GUI 中运行代码。git”...) 。我很好奇是否有人有在团队环境中使用 App Script 工作的经验以及最终使用了哪些工作流程。团队如何让 2 个人以上处理同一个文件,同时允许快速迭代,而无需调用clasp pull/push每次迭代?或者这是不可避免的?
我正在使用clasp 工具编写Google Apps 脚本 (GAS),该工具可让您在本地开发编译为 Google 脚本的 TypeScript 文件。
我通过运行导入了 Google Script 类型定义npm i -S @types/google-apps-script,并且我的 IDE(VS Code)似乎确实能够理解 Google Script 类型。然而,我似乎无法用这些类型定义来注释我的变量。例如,
let ss: Spreadsheet;
ss = SpreadsheetApp.getActive();
Run Code Online (Sandbox Code Playgroud)
是否可以使用这些导入的类型定义来注释我的代码?
我是扣扣新手。
通过以下方式初始登录后:clasp login 我可以登录 script.google.com 接下来,我创建了一个项目并通过以下方式推送文件:clasp push
现在,我已使用以下方式注销:clasp logout
这里需要帮助:现在,如果我正在尝试:
clasp 登录 --creds ./.clasp.json
我收到“检索访问令牌时出错:TypeError:无法读取未定义的属性‘project_id’”。
请指导我如何通过 --creds 登录?
我正在尝试使用 CLASP将 Google Script 转换为Web App。
doGet(e)/doPost(e)中的“e”对象是否有现有的类型定义,我可以在打字稿 /clasp 方面使用它?
triggers web-applications google-apps-script typescript clasp
clasp ×10
typescript ×3
commonjs ×1
javascript ×1
jestjs ×1
tdd ×1
triggers ×1
unit-testing ×1