Использовать машинопись с приложениями Google скрипт


Я хотел бы использовать Typescript для моих проектов Google Apps Script (GAS), но я не могу найти способ скомпилировать мой код во что-то, что принимает GAS.

GAS не поддерживает экспорт, и Typescript, похоже, не любит получать доступ к переменным через глобальную область (он хочет импортировать/требовать, и, следовательно, экспортировать).

Я ищу любое из следующих решений, которые, по моему мнению, помогут мне работать:

1) плагин Babel или что-то подобное, что может удалить весь импорт и Инструкции экспорта вместе с их именами атрибутов (требуется, чтобы я не использовал те же имена методов, которые я не использую.

Итак:

import MyLibrary from './library';
export function greetJohn() { MyLibrary.greet('John'); }
export default { greetJohn }

Становится:

function greetJohn() { greet('John'); }

2) Измените typescript так, чтобы он мог видеть глобальную область

3) Вавилонский плагин или что-то подобное, что объединяет все .ts файлы в один .JS-файл и преобразует операторы импорта / экспорта, обрабатывая каждый файл как объект / функцию.

2 2

2 ответа:

Теперь можно использовать Typescript для разработки проектов сценариев Google Apps, но это невозможно сделать непосредственно в Редакторе сценариев приложений.

По разработать сценарий программы, используя машинопись самым простым способом является использование застежка - .

Связанные

Я рассматривал подобный сценарий в последние пару недель (не используя TypeScript, но все еще ES6/ES7).

Некоторые из вещей, которые я обнаружил, что вы можете найти полезными для того, чего вы пытаетесь достичь:

  • Gas webpack plugin позволяет использовать webpack для загрузки модулей в GAS, определяя, когда вы назначаете глобальный объект, а затем генерируя функцию верхнего уровня, которую может запускать GAS. Это означает, что ваш импорт и экспорт будут обработаны по webpack, так что вам не придется их удалять.
  • я не смог заставить import * as x from y синтаксис работать, однако import { x } from y и import x from y работали нормально при использовании webpack.
  • вы можете включить ваш HTML в виде строки в ваш пакет, используяHTML loader .

Если вы не хотите использовать webpack, одно из решений-поместить весь ваш код в один файл app.ts, создать объект, содержащий все ваши функции, установить функции верхнего уровня, чтобы они могли быть подобраны газом. Вы также можете экспортируйте объект контейнера и используйте его в наборе тестов. При компиляции с Babel используйте плагинbabel-plugin-transform-remove-export для удаления инструкции export.

const app = {
  onInstall: () => { ...
  },
  onOpen: () => { ...
  }
}

const { onOpen, onInstall } = app;

export { app };