Скрипт Google Apps - получение имени пользователя

Надеюсь, это будет легко для вас, опытных разработчиков. Я пытаюсь использовать службу скриптов Google Apps, чтобы получить имя пользователя, вошедшего в систему для моего сайта Google. Я могу заставить электронное письмо отображаться нормально, однако, когда я пытаюсь использовать метод подстроки для сокращения имени пользователя, я получаю следующую ошибку.

TypeError: Cannot find function substring in object [email protected]. (line 4, file "getusername")

Я понимаю, почему получаю эту ошибку, но не знаю, как ее исправить. Ниже мой код

    function doGet() {

  var userEmail = Session.getEffectiveUser();
  var username = userEmail.substring(0, userEmail.indexOf("@"));

  var HTMLString= "<body> <h2> Logged in as " + userEmail +",</h2></body>";

    HTMLOutput = HtmlService.createHtmlOutput(HTMLString);
  return HTMLOutput
}

Я предполагаю, что, поскольку переменная userEmail является динамической в ​​зависимости от вошедшего в систему пользователя, переменная username не может видеть адрес электронной почты, пока он не будет выполнен?

Любая помощь будет принята с благодарностью.

Полный новичок в Javascript здесь.

Спасибо

разъем

Вы пытаетесь сократить объект, а не строку. См. Ответ @ SandyGood, чтобы узнать, как это сделать.

freginold 22.03.2018 13:56
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
1 720
1

Ответы 1

Изменять:

var userEmail = Session.getEffectiveUser();

к:

var userEmail = Session.getEffectiveUser().getEmail();

Если вы посмотрите документацию для Session.getEffectiveUser(), вы увидите, что такое «возврат». Я долгое время не обращал на это особого внимания. Но вам всегда нужно знать, что возвращается. Некоторые возвращаемые типы: строка, объект, целое число или класс. В зависимости от того, что будет возвращено, это определит, что вы можете делать дальше. Многие новички замечают, что между вещами есть период, и могут понять, что им нужно исправить все вместе с точкой. Но они действительно не знают, для чего этот период. Этот период называется точечным оператором, и каждое место, где есть «точечный оператор», по сути, является еще одним шагом в процессе. Вы «связываете» несколько операций вместе. В коде: Session.getEffectiveUser().getEmail() есть две точки (операторы с точкой) и две разные вещи, каждая из которых имеет свое возвращаемое значение. Метод getEmail() возвращает строку. В документации указано, что getEffectiveUser() возвращает «пользователя», но если вы перейдете к документации для «пользователя», вы увидите, что он описан как «класс». Чтобы понять, что такое «Класс», вам нужно провести небольшое исследование.

Да ! Большое спасибо. Это именно то, что мне было нужно: D Есть шанс, что вы могли бы объяснить, почему это сработало? Еще раз спасибо.

Jack Smith 22.03.2018 15:34

@JackSmith Почему то, что сработало? Используете метод объекта для доступа к свойству объекта? Это то, что делают методы. User#getEmail() возвращает значение свойства email для данного объекта User.

tehhowch 22.03.2018 18:26

См. Добавленное объяснение.

Alan Wells 23.03.2018 02:12

Большое спасибо за ваше объяснение @SandyGood Очень признателен: D

Jack Smith 26.03.2018 10:12

Вы можете отметить ответ как правильный, щелкнув большую зеленую галочку.

Alan Wells 26.03.2018 17:58

Другие вопросы по теме