Clasp无法创建新的Apps脚本

时间:2019-03-30 13:04:15

标签: google-apps-script clasp

我已使用此终端命令克隆了一个应用脚本

clasp clone <scriptId>

到此文件夹:

  

... / desktop / AppsScriptProjects

文件已下载到文件夹

  

... / desktop / AppsScriptProjects / AppsScriptName

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

我导航回:

  

... / desktop / AppsScriptProjects

并执行:

clasp create "Test Project"

但是我得到了错误:

  

不支持嵌套的项目。

我在做什么错了?

  

版本信息:

     

OS:Mac OS(Mojave)

     

节点:v10.15.3

     

扣:2.1.0

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

  

。 ..

1 个答案:

答案 0 :(得分:1)

问题是clasp create <words> creates a project in the current directory,脚本项目名称为<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文件,指示clap这是与clasp相关的回购并且对应于单个Apps Script项目。就您而言,您具有以下目录结构:

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

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

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

解决方案

代替上述方法,将&cd创建到"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)是您调用{{1}的目录}。