如何在 Google 脚本中输入提示 Google Types?

问题描述 投票:0回答:3

我正在尝试在 Google Script 中输入一堆 javascript,并且我已经尝试了这个:

/**
 *  Get (named) range given by name
 *
 *  @param {String} name 
 *  @return {Range}
 *
 */
function getRange(name) {
  return SpreadsheetApp.getActiveSpreadsheet().getRangeByName(name);
}

它显示良好,并提供与内置 getRangeByName 相同的类型提示,但它实际上不起作用,即当我输入类似

getRange("hello").get"
之类的内容时,自动完成脚本编辑器不会自动完成,就像它应该的那样。我应该在
Range
之间留出名称间隔还是我做错了什么?

google-apps-script ide jsdoc
3个回答
4
投票

当前的 Google Apps Script IDE 不使用本地 JSDOC 来扩展自动完成功能。选项:

  1. 创建 Goole Apps 脚本库并将其附加到您的项目
  2. 使用另一个IDE

关于此时使用其他IDE,有一个名为CLASP的工具可以帮助下载/上传脚本,从而可以使用其他IDE。

资源

相关

其他相关


1
投票

可以通过为其定义一个类,并在定义参数类型的构造函数上方添加注释,为普通的旧 JavaScript 对象添加类型提示

onEdit(e)(编辑单元格时)有一个事件,e 作为输入。 不幸的是,脚本编辑器中没有事件类型。 我们可以通过定义事件类并为参数 e 添加类型提示来解决这个问题,如下所示:

class User {
   /**
    * @param {string} email
    * @param {string} nickname
    */
    constructor(email, nickname) {
    this.email = email;
    this.nickname = nickname;
  }
}

class Range {
   /**
    * @param {Number} columnEnd
    * @param {Number} columnStart
    * @param {Number} rowEnd
    * @param {Number} rowStart
    */
    constructor(columnEnd, columnStart, rowEnd, rowStart) {
    this.columnEnd = columnEnd;
    this.columnStart = columnStart;
    this.rowEnd = rowEnd;
    this.rowStart = rowStart;
  }
}

class Event {
   /**
    * @param {string} value
    * @param {User} user
    * @param {ScriptApp.AuthMode} authMode
    * @param {Range} range
    * @param {string} oldValue
    */
    constructor(value, user, authMode, range) {
    this.value = value;
    this.user = user;
    this.authMode = authMode;
    this.range = range;
  }
}

/**
* @param {Event} e
*/
function onEdit(e) {
  // now we have autocompletion on e properties
  SpreadsheetApp.getUi().alert(JSON.stringify(e));
  SpreadsheetApp.getUi().alert(e.user.email);
}

0
投票

使用符合

SpreadsheetApp
资格的名称对我有用。

/**
 *  Get (named) range given by name
 *
 *  @param {String} name 
 *  @return {SpreadsheetApp.Range}
 *
 */
function getRange(name) {
  return SpreadsheetApp.getActiveSpreadsheet().getRangeByName(name);
}
© www.soinside.com 2019 - 2024. All rights reserved.