无法从npm或yarn脚本运行Clasp

时间:2019-11-06 16:40:11

标签: google-apps-script npm-scripts clasp

我有一个Google Apps脚本项目,我正在尝试从npm或yarn脚本运行clasp push。我可以从命令行运行clasp push,但是当用作脚本时,同一命令将失败:

"scripts": {
  "push": "clasp push"
}

npm run pushyarn push运行时,脚本失败,输出为> Did you provide the correct scriptId?。如果我直接在命令行上运行clasp push,它将成功将我的项目文件推送到Google Apps脚本。

我已验证脚本在包含.clasprc.json和appsscript.json的目录中执行。这是完整的输出:


> @ push /gs
> cd build && ls -a && clasp push

.               ..              .clasp.json     .clasprc.json   appsscript.json build.gs

> Did you provide the correct scriptId?

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ push: `cd build && ls -a && clasp push`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the @ push script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

对于上下文,我正在尝试做与此博客文章类似的事情:https://labs.clio.com/a-modern-gmail-add-on-build-process-3dd7aad111f5

2 个答案:

答案 0 :(得分:2)

您提供了正确的scriptId吗?

  • 复制.clasp.json以在运行扣之前进行构建。
  • 将正确的ID添加到.clasp.json

示例

外壳

$>  cd build && cp ./../.clasp.json ./ && ls -a && clasp push

.clasp.json

{
  "scriptId": "17qJJk9kvCm2abutL1MUNzfSUd9aeieJAGRdKF_4QG4-EkxQC5C6jHyIP",
  "rootDir": "build"
}

答案 1 :(得分:0)

我能够诊断出问题。我发现我有一个全局登录名(〜/ .clasprc.json),它具有与本地.clasprc.json不同的访问令牌。从命令行运行clasp push时,它将在项目根目录中使用.clasprc.json文件。但是,当它通过npm运行时,它使用的是全局登录名。
我运行了clasp logout并验证了项目根目录中的.clasprc.json文件,并且我的主文件夹都被删除了。重新登录后,我能够使用npm脚本成功推送