问题标签 [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.
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
不可用?
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 没有改变。
我还禁用了我的防火墙和实时扫描,什么都没有。
我所期待的:
我得到了什么:
google-apps-script - 由于“应用程序脚本托管项目”而缺少 Cloud Platform 项目 ID
我有一个 Apps Script 项目,我正在开发并通过 Clasp 推送更新,我想在终端中设置 clasp stackdriver 日志记录。为此,我需要脚本的项目 ID,但我找不到。
在脚本编辑器中,我导航到 Resource -> Cloud Platform project.. 我刚收到以下消息,ID 应该是:“这个脚本有一个 Apps Script-managed Cloud Platform 项目。”
google-apps-script - 如何从命令行传递谷歌登录凭据以扣住登录?
我想将凭据与 clasp 登录命令一起传递,因此我不需要在使用 clasp 登录时显式输入凭据并提供授权。
我尝试将带有 clientId 的 google 的 OAuth 凭据文件保存到我将使用 clasp 登录的根文件夹中。
我使用了以下命令
creds.json 是包含 OAuth 客户端数据的文件
但是当我运行这个命令时它仍然打开谷歌的登录页面
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
但不知道如何让它与默认项目一起使用。
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。但是,您确实不需要该项目,请按照以下步骤在您的本地进行重现。
- 确保创建了 GCP 项目并启用了 Apps Script API的gcloud cli
- 有扣子cli
npm install -g @google/clasp
clasp login
.clasprc.json
使用 GCP获取和身份验证clasp create --title "My Script" --type webapp
并记下 Scripts ID- 将应用程序脚本项目与您的 GCP 项目相关联
以下步骤是导致问题的文件。只需将它们添加到创建的 clasp 项目中。6. 这是我的 Clasp Builder Image 的入口点:
builder/clasp_ci.sh
- 建设者 dockerfile
builder/Dockerfile
- 现在 cloudbuild 来推动 clasp builder
builder/cloudbuild.yaml
- 我用于应用程序脚本项目的 cloudbuild ci。如果您要创建一个新项目,则不需要构建步骤,也不需要and步骤
dir
中的键。这对于上面我的项目链接中的项目非常具体。push
deploy
cloudbuild.yaml
- 这是加载构建器的命令。确保替换
yourproject
为您的实际项目 ID。
- 最终得到错误的命令。确保替换
yourproject
为您的实际项目 ID 和your_script_id
您在步骤 4 中记下的实际脚本 ID。
我也尝试过使用通过 OAuth 登录创建的凭据,但我得到了同样的错误。但是,这可能有助于解决问题。使用 OAuth 运行 Clasp 的文档
希望有人可以帮助我完成这项工作。如果是这样,这将是第一个使用 Apps Script 和 Clasp 的 Cloudbuild CI 在线文档,因为我在任何地方都找不到这样做的人。我找到了一些使用 travis 和 jenkins 的链接,但由于某种原因他们正在做的事情不起作用。有谁看到我不是什么东西?我在这里错过了什么?!?!
其他一些相关或从未解决的问题:
google-apps-script - 如何在谷歌脚本编辑器中折叠代码
有谁知道如何在谷歌应用脚本编辑器中折叠代码?
在在线编辑器中阅读/调试长代码非常困难。
我在谷歌上进行了一些搜索,但找不到与此问题相关的任何结果。
javascript - 如何在带有 Clasp 的 Google Apps 脚本中使用 Axios/Fetch?
设置
- 我正在使用https://github.com/labnol/apps-script-starter (包含 clasp、babel 和 webpack)并正确设置它以便在 Google 表格插件上工作。
- 我在 VS Code 中使用 Quokka.js + Node 进行原型设计
目标
我开始开发侧边栏和初始功能,一切都很好。现在我想使用 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(如交叉提取)但遇到了同样的问题)
任何关于如何实现我的目标的想法将不胜感激!
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
……或者没关系?
google-apps-script - 无法从 npm 或 yarn 脚本运行 Clasp
我有一个 Google Apps 脚本项目,我正在尝试clasp push
从 npm 或 yarn 脚本运行。我可以从命令行运行clasp push
,但相同的命令在用作脚本时会失败:
当作为npm run push
or运行时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