Как объявить пользовательский класс в сценариях google?

Я хочу создать класс внутри моего script.

Язык Google Apps Script основан на javaScript, поэтому я взял пример из руководства по javaScript:

class Polygon {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
}

Однако это не работает. Я получаю это сообщение об ошибке:

Missing ; before statement. (line 1, file "Code")

Означает ли это, что невозможно создавать новые классы в сценариях Google?

Или существует другой синтаксис, который я должен использовать?

Ответ 1

Исторически Javascript - это "бесклассовый" язык, классы - это более новая функция, которая еще не получила широкого распространения и, по-видимому, пока не поддерживается приложениями Script.

Вот пример того, как вы можете имитировать поведение класса в приложениях Script:

var Polygon = function(height, width){
  this.height = height;
  this.width = width;

  this.logDimension = function(){
    Logger.log(this.height);
    Logger.log(this.width);
  }
};

function testPoly(){
  var poly1 = new Polygon(1,2);
  var poly2 = new Polygon(3,4);

  Logger.log(poly1);
  Logger.log(poly2);
  poly2.logDimension();
}

Ответ 2

TypeScript теперь можно использовать с GAS. Чтобы использовать его, загрузите файлы сценариев, используя clasp затем преобразуйте их в TypeScript, изменив суффиксы файлов на .ts. Дополнительную информацию можно найти по адресу https://developers.google.com/apps-script/guides/typescript. Как только это будет сделано, class может быть использован.

Пример TypeScript, который используется для реализации пользовательских функций Google Sheets, можно найти по адресу https://github.com/november-yankee/science-test-grading.