Скрипт Google Apps: ошибка типа: undefined не является функцией - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь запустить это демо Демонстрация блога Google Sheets . Я выполнил все шаги, но получил эту ошибку после запуска https://script.google.com/macros/s/[spreadsheetID]/exec?key=abcdef:

TypeError: undefined не является функцией (строка 19, файл "Код")

Строка 19 = var headings = rows[0].map(String.toLowerCase); Ниже приведена соответствующая функция, а здесь полный код .

function doGet(e) {
  if (!isAuthorized(e)) {
    return buildErrorResponse('not authorized');
  }

  var options = {
    page: getPageParam(e),
    category: getCategoryParam(e)
  }

  var spreadsheet = SpreadsheetApp.openById(SPREADSHEET_ID);
  var worksheet = spreadsheet.getSheets()[0];
  var rows = worksheet.getDataRange().sort({column: 2, ascending: false}).getValues();

  var headings = rows[0].map(String.toLowerCase);
  var posts = rows.slice(1);

  var postsWithHeadings = addHeadings(posts, headings);
  var postsPublic = removeDrafts(postsWithHeadings);
  var postsFiltered = filter(postsPublic, options.category);

  var paginated = paginate(postsFiltered, options.page);

  return buildSuccessResponse(paginated.posts, paginated.pages);
}

Как решить эту проблему?

1 Ответ

2 голосов
/ 24 апреля 2020

Когда я увидел полный сценарий на GitHub, выяснилось, что этот сценарий был опубликован 2 года назад go. В этом случае V8 не был добавлен. Чтобы избежать ошибки TypeError: undefined is not a function (line 19, file "Code"), как насчет следующих 2 шаблонов?

Шаблон 1:

В этом шаблоне сценарий используется без среды выполнения V8. В этом случае отключите среду выполнения V8 в редакторе сценариев. Таким образом, var headings = rows[0].map(String.toLowerCase); может использоваться без ошибки.

Шаблон 2:

В этом шаблоне сценарий используется со средой выполнения V8. В этом случае, пожалуйста, включите V8 Runtime в редакторе скриптов. А также, пожалуйста, измените скрипт следующим образом.

От:
var headings = rows[0].map(String.toLowerCase);
До:
var headings = rows[0].map(Function.prototype.call, String.prototype.toLowerCase);

Ссылка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...