【问题标题】:How to enable autocomplete for Google Apps Script in locally-installed IDE如何在本地安装的 IDE 中为 Google Apps 脚本启用自动完成功能
【发布时间】:2020-12-22 16:55:48
【问题描述】:

我正在尝试使用 clasp 在本地构建 GAS 项目。

任何本地安装的 IDE 都是对 Google 脚本编辑器的巨大改进,因此该工具看起来很有前途。不幸的是,GAS 服务的自动完成功能似乎没有包含在包中。

文档说:

Apps Script CLI 使用 TypeScript 在开发时提供自动补全和 linting。使用 Visual Studio Code 之类的 IDE 进行 TypeScript 自动补全。

完成这些步骤并安装所有必需的依赖项后,我仍然无法使自动完成功能正常工作。当我为现有项目执行clasp pull 命令时,它会将“.gs”扩展名转换为“.js”。自动完成建议只是解析现有代码的结果。

例如,如果我在代码中的某处调用sheet.getRange(),那么getRange() 方法将在建议中弹出,但我无法列出PropertiesService 的可用选项,除非它已在我的代码。

是否有人为 Google Apps 脚本启用了自动完成功能?

【问题讨论】:

    标签: google-apps-script visual-studio-code autocomplete clasp


    【解决方案1】:

    我找到了部分可行的解决方案,但它可能不适用于其他软件。以下步骤适用于 Visual Studio Code:

    1. 安装包含 GAS 类型定义的 NPM 包

      https://www.npmjs.com/package/@types/google-apps-script
      
    2. 在您本地保存的脚本中,创建一个“.js”文件并键入

      import 'google-apps-script';
      

    【讨论】:

    • 使用最新的表扣,不需要第 2 步和删除导入。它们是自动处理的。
    • 应该在本地还是全局安装才能正常工作?
    • @EdgeDev 您可以在本地安装。有关更新说明,请参阅本指南:github.com/google/clasp/blob/master/docs/typescript.md
    • in Visual Studio Code...npm i @types/google-apps-script 单独工作以添加 intellisense:无需为import 'google-apps-script' 创建额外文件,也无需向.claspignore 添加任何内容
    • @rellampec 现在确实如此。截至 2018 年还没有。不过感谢您的澄清。
    【解决方案2】:

    这个答案是对基于tsc/tsserver 支持 Typescript 自动完成的 IDE/扩展的公认答案的一个小变化:

    • 安装 TypeScript 和 @types/google-apps-script

    • 在本地项目目录中创建jsconfig.json 文件:

      { 
          "compilerOptions": {
              "checkJs": true
            }
      }    
      
    • 或者,如果您将 typescript 与 javascript 一起使用,则创建一个 tsconfig.json

      { 
          "compilerOptions": {
              "allowJs": true,
              "checkJs": true,
              "types": ["google-apps-script"]
            }
      }    
      
    • .claspignore 中包含这两个文件名,如果您使用 clasp 并且文件位于本地目录中。

    • 如果配置位于您的主/父目录中,您也可以全局使用任何此配置,因为 tsc 从项目/本地文件夹搜索此配置到根目录(在这种情况下,您不需要将其包含在.claspignore) 中。

    【讨论】:

    • 这适用于哪个 IDE?我正在尝试找到一种方法让它在 Notepad++ 中工作。
    • @IMThe 应该适用于任何支持自动完成+打字稿的 ide。我不确定notepad++是否支持打字稿的自动完成。见thisthis
    • 我正在使用 VS Code,此解决方案运行良好,无需创建 .claspignore,因为默认情况下它已经忽略了除某些扩展之外的所有扩展。但是我在tsconfig.json 中遇到了一个恼人的错误:“无法写入'.../Code.js',因为它会覆盖输入文件.ts”。我在"compilerOptions" 中用"outDir": "./built" 修复了错误。
    • ts 类型的小问题。应该是"types": ["@types/google-apps-script"]
    【解决方案3】:

    如果您使用的是任何 JetBrains IDE:

    转到Languages & Frameworks -> JavaScript -> Libraries -> Download... 并下载库google-apps-script

    【讨论】:

    • 这基本上只是再次安装正确的@types,就像通过安装NPM deps一样。如果您从 Web 应用程序中接管了一组 *.gs 文件,那么这还需要转到设置 Editor - File types 并将 JavaScript 扩展名设置为 *.gs 以便代码正确突出显示
    【解决方案4】:

    尝试在.claspignore (docs) 中包含文件名import.js

    这应该可以省去每次推送之前删除文件的麻烦。

    【讨论】:

      【解决方案5】:

      这是谷歌开发者在“TU17: Enhancing the Google Apps Script Developer Experience with clasp and TypeScript”视频中提供的答案。

      向您的项目添加一个 JavaScript 文件,例如“appscript.js”,并在该文件中添加:

      import "google-apps-script";
      

      保存该文件,但确保在使用.claspignore 文件将文件推回项目时忽略它。

      【讨论】:

        猜你喜欢
        • 2013-06-30
        • 2016-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多