首页 > 解决方案 > Clasp 无法创建新的 Apps 脚本

问题描述

我用这个终端命令克隆了一个应用脚本

clasp clone <scriptId>

到这个文件夹:

.../桌面/AppsScriptProjects

并且文件已下载到该文件夹

.../桌面/AppsScriptProjects/AppsScriptName

但现在,我想创建一个新的 Apps 脚本。

我导航回:

.../桌面/AppsScriptProjects

并执行:

clasp create "Test Project"

但我得到了错误:

不支持嵌套扣项目。

我究竟做错了什么?

版本信息:

操作系统:Mac Os(莫哈韦沙漠)

节点:v10.15.3

表扣:2.1.0

当我ls -a在打算创建新应用程序脚本的目录上运行时,我得到的只是:

. ..

标签: google-apps-scriptclasp

解决方案


问题是在当前目录clasp create <words> 中创建了一个项目,脚本项目名称为,除了and<words>之外没有其他文件。appsscript.json.clasp.json

即使给出了--rootDir <folder name>参数,项目也会在当前目录中创建。这与对当前目录clasp clone执行克隆的行为相同。

所以:

$ cd ~/clasp_projects
$ clasp create "project 1"
Clone which script? (Use arrow keys)
Clone which script? standalone
Created new standalone script <...>
$ ls -a
./ ../ .clasp.json appsscript.json

如果您也提供了根目录:

$ cd ~/clasp_projects
$ mkdir "project 1"
$ clasp create "project 1" --rootDir "project 1"
Clone which script? (Use arrow keys)
Clone which script? standalone
Created new standalone script <...>
$ ls -a
./ ../ .clasp.json appsscript.json 'project 1'/
$ ls -a "project 1"
./ ../

没什么不同。

对于这两种情况,您的当前目录现在都有一个.clasp.json文件,向 clasp 指示这是一个与 clasp 相关的存储库,并且对应于单个 Apps 脚本项目。在您的情况下,您具有以下目录结构:

AppsScriptProjects/
`--- AppsScriptName/
     |--- .clasp.json
     |--- appsscript.json
     |--- myscript.js
       ...

当您尝试调用clasp create "Test Project"fromAppsScriptProjects/时,您是在告诉 clasp 创建此结构:

AppsScriptProjects/
|--- AppsScriptName/
|    |--- .clasp.json
|    |--- appsscript.json
|    |--- myscript.js
|      ...
|--- .clasp.json
`--- appsscript.json

解决方案

代替上述方法,创建 & cd into "Test Project/"

$ cd AppsScriptProjects
$ mkdir "Test Project"
$ cd "Test Project"
$ clasp create
...

然后将产生

AppsScriptProjects/
|--- AppsScriptName/
|    |--- .clasp.json
|    |--- appsscript.json
|    |--- myscript.js
|      ...
`--- Test Project/
     |--- .clasp.json 
     `--- appsscript.json

简而言之:clasp适用于您当前的目录。它不会在子目录中创建项目。虽然它可以在子目录中创建项目文件,但项目目录(您可以在其中找到.clasp.json)是您调用的目录clasp


推荐阅读