【问题标题】:Google Apps Script Library AutocompleteGoogle Apps 脚本库自动完成
【发布时间】:2013-06-30 16:14:01
【问题描述】:

我正在创建一个用于 google 应用程序脚本的库,但在使用 JSDoc Style Documentation 时遇到了一些问题,以便 IDE 自动完成功能适用于最终用户。

作为 User.prototype.METHODNAME 输入的所有方法都应显示在此库的自动完成中。目前只有 .getEmail() 方法出现在用户对象的自动完成中。 .getName() .getPassword() .hasPaid() 等方法也应该出现,但不会出现。特别奇怪的是,当我交换 .getEmail() 和 .getId() 的方法名称(并且只有方法名称)时,IDE 仍然显示 .getEmail() 作为唯一选项,并运行原始的 .getId() 方法.

这是一个模拟库的库密钥,没有用于测试的敏感信息:M1TqnX8hyIa1H8ikAojXirsqqTKXVxxXC

/** 
*@param {Number} id
*@param {String} email
*@param {String} name
*@param {String} password
*@return {User} User
*/
function User(id, email, name, password){
  var ss = SpreadsheetApp.openById("INSERT SPREADSHEET HERE").getSheetByName("Users");
  var data = ss.getRange(1, 1, ss.getLastRow(), ss.getLastColumn()).getValues();
  for (var i = 1; i < data.length; i++){
    if (data[i][0] == id){
      this.id = id;
      this.email = data[i][1];
      this.name = data[i][2];
      this.password = data[i][3];
      this.picks = data[i][4];
      this.paid = data[i][5];   
    }
  }
  return this;
}
/**
* @param {Number} id ID of the user
* @return {User} User
*/
function getUserById(id){
  var user = new User(id, null, null, null);
  return user;
}
/**
* @param {String} email email of the user
* @param {String} name name of the user
* @return {User} User
*/
function getUserByEmailAndName(email, name){
  return new User(null, email, name, null);
}
/** 
*@return {Boolean} isCorrect
*/
User.prototype.checkPassword = function (password){ return this.password == Utilities.base64Encode(password); }

User.prototype.getEmail = function (){return this.email;}
/** 
*@return {Number} id 
*/
User.prototype.getId = function (){return this.id;}
/** 
*@return {String} name 
*/
User.prototype.getName = function (){return this.name;}
/** 
*@return {String} encodedPassword 
*/
User.prototype.getPassword = function (){return this.password;}
/** 
*@return {String} jsonPicks 
*/
User.prototype.getPicksAsString = function (){return this.picks;}
/** 
*@return {JSON} jsonPicks 
*/
User.prototype.getPicksAsJson = function (){return Utilities.jsonParse(this.picks);}
/** 
*@return {Boolean} hasPaid
*/
User.prototype.hasPaid = function (){return this.paid;}

【问题讨论】:

  • 尝试使用您的库,但似乎权限未设置为供公众使用:“您无权访问您的脚本使用的库 BowlApp,或者它已被删除。”
  • 这个问题是重复的,见thisthis

标签: google-apps-script javascript jsdoc


【解决方案1】:

我认为自动完成功能仅适用于第一个库版本中的功能。所以我发现创建一个新的第一个库可以解决这个问题(但你现在必须自己保存你的版本)。

试试这个(这里的一切都是法语,但我会尝试翻译):

1) 将您的项目复制到一个新项目(文件-创建副本) 2)在这个新项目中创建一个新库(文件管理版本) 3)获取新的项目库Key(File-Project Properties) 4) 使用密钥(Ressources-Libraries)将此新库链接到您的项目

【讨论】:

    【解决方案2】:

    如果您正在使用 TypeScript - 或打算迁移到 - 我们已经构建了一个旨在帮助解决此问题的包:

    https://github.com/maelcaldas/clasp-types

    您可以使用它为我们的面向对象库和使用 Typescript 编写的客户端 API 生成自动完成功能。

    【讨论】:

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