Разделение скрипта Google Apps (‘ n’) не работает с данными из каталога администратора Goggle

#javascript #google-apps-script #google-admin-sdk

#javascript #google-apps-script #google-admin-sdk

Вопрос:

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

Я захожу в панель администратора G Suite и перехожу к схеме одного пользователя и ввожу строку: Doesnt n work .

В скрипте Apps я извлекаю эти данные и разделяю их. Но это не разбивает его на массив:

 function listAllUsers(oa) {
var pageToken, page;
var userDatas = [];
do {
page = AdminDirectory.Users.list({
  customer: 'my_customer',
  query: 'orgUnitPath:' oa,
  orderBy: 'givenName',
  projection: 'full',
  maxResults: 100,
  pageToken: pageToken
});

var theData ='';
var users = page.users;
if (users) {
  for (var i = 0; i < users.length; i  ) {
    var user = users[i];
    

    if( (typeof user.customSchemas !== "undefined") amp;amp; ('myCustomSchema' in user.customSchemas)){
 
     theData = user.customSchemas.myCustomSchema.myCustomSchemaField;
     Logger.log(theData); //  this shows Doesnt n work
     var splitarray = theData.split('n'); // this shows this shows [Doesnt n work]
     theData = 'Doesnt n work';
     splitarray = theData.split('n'); // this shows [ Doesnt , work] which is correct

    }
    else{
      Logger.log("no data");
    }

}
pageToken = page.nextPageToken;
} while (pageToken);
Logger.log(userDatas);
return userDatas;
}
  

Как это возможно? Должен ли я сначала выполнить какое-то кодирование?

Комментарии:

1. ‘n’ не интерполирует новую строку, в то время как » n» это делает.

Ответ №1:

Я подозреваю, что строка на самом деле имеет обратную косую черту, за которой следует буква n , вместо того, чтобы содержать в ней новую строку. Например, в строковых литералах: "Doesnt \n work" (который при печати выглядит как Doesnt n work ).

Вы можете доказать это, сделав это:

 Logger.log(theData.indexOf("\"));
  

…который даст вам индекс, по которому найдена обратная косая черта ( -1 если таковой нет), или это:

 Logger.log(theData.split("").map(function(ch) { return ch   "("   ch.charCodeAt(0)   ")";}).join(", "));
  

…который показывает вам каждую единицу кода в строке и ее символьный код.

Комментарии:

1. это именно так.