javascript - Google Apps 脚本 split('\n') 不适用于 Goggle 管理目录中的数据
问题描述
我正在通过Google Admin Directory检索用户数据,我在其中将一些数据存储在客户架构中。在此客户数据的一个字段中,我存储了一个包含的字符串,\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") && ('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;
}
这怎么可能?我必须先进行一些编码吗?
解决方案
我怀疑字符串实际上有一个反斜杠,后跟一个字母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(", "));
...它向您显示字符串中的每个代码单元及其字符代码。
推荐阅读
- javascript - 如何在 Expo/React-Native 中减小 APK 的大小?
- amazon-web-services - 如何在 AWS 中导出私钥?
- cloud - OpenStack Python CLI - “nova”无法识别云配置
- java - Java 泛型:将无界类型转换为有界类型
- python - 如何在 Sphinx ReadTheDocs 主题中添加带有本地目录的右侧栏?
- c++ - C++ private char* 成员分配失败'表达式必须是可修改的左值'
- http - 如何判断访问 URL 是否会下载某个 mimetype 的文件?
- java - IBM Appscan 给出 Xpath 编译问题
- javascript - highcharts 热图中缺少坐标显示空框
- computer-vision - 如何修剪 Detectron2 模型?