在 google 工作表脚本中发布对字符串的转换
Issue casting to string in google sheets script
对于 google 张文档,我有以下 函数 :
function names(nameCells) {
var roomieNames = new Array();
for (i = 0; i < nameCells.length; i++) {
var str = String(nameCells[i]);
var splitted = str.split(", ");
for (k = 0; splitted.length; i++) {
roomieNames.push(splitted[i]);
}
}
return roomieNames;
}
该函数应该获取名称以逗号分隔的单元格列表和 return 以及所有名称的单个列表。
例如:
James
Reese, Peter
Ryan, Monica
Reba
Nick
应该产生
James
Reese
Peter
Ryan
Monica
Nick
但是我似乎在将 单元格值 转换为 字符串值 时遇到了问题,它说 "Internal error executing the custom function" 没有给出我比那更具体。以下更基本的程序确实按预期工作:
function namesSimple(nameCells) {
var roomieNames = new Array();
for (i = 0; i < nameCells.length; i++) {
roomieNames.push(nameCells[i]);
}
return roomieNames;
}
然而,以下内容会产生第 4 行注释中的错误:
function namesBroken(nameCells) {
var roomieNames = new Array();
for (i = 0; i < nameCells.length; i++) {
var splitted = nameCells[i].split(", "); //TypeError: Cannot find function split in object James. (line 4).
for (k = 0; splitted.length; i++) {
roomieNames.push(splitted[i]);
}
}
return roomieNames;
}
这让我相信我需要将对象转换为字符串,但如上所述,这似乎也不起作用。
我尝试使用谷歌搜索铸造技术并认为这应该有效。我也试过了。toString()
;没有运气。有人可以帮帮我吗?谢谢:)
根据 api 文档 (https://developers.google.com/sheets/api/guides/values),单元格范围请求的响应作为 'ValueRange' 对象返回。
数据表示:
{
"range": string,
"majorDimension": enum(Dimension),
"values": [
array
],
}
https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values#resource-valuerange
值是 ListValue
的数组:https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.ListValue
ListValues 表示一个 Value
对象,它将具有以下值之一:(https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.Value)
null_value NullValue Represents a null value.
number_value double Represents a double value.
string_value string Represents a string value.
bool_value bool Represents a boolean value.
struct_value Struct Represents a structured value.
list_value ListValue Represents a repeated Value.
文档说:
Value represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of that variants, absence of any variant indicates an error.
看看这个自定义函数是否有效:
function namesSimple(values) {
return values.toString().split(",").map(function (r) {
return r.trim();
}).filter(String);
}
在您的电子表格中输入
=namesSimple(A1:A20)
问题在于嵌套的 for 循环(我需要使用任何 IDE 来捕捉这些错误)
function names(nameCells) {
var roomieNames = new Array();
for (i = 0; i < nameCells.length; i++) {
var str = String(nameCells[i]);
var splitted = str.split(", ");
for (k = 0; splitted.length; i++) { //should be for (k = 0; splitted.length; k++)
roomieNames.push(splitted[i]); //should be roomieNames.push(splitted[k])
}
}
return roomieNames;
}
对于 google 张文档,我有以下 函数 :
function names(nameCells) {
var roomieNames = new Array();
for (i = 0; i < nameCells.length; i++) {
var str = String(nameCells[i]);
var splitted = str.split(", ");
for (k = 0; splitted.length; i++) {
roomieNames.push(splitted[i]);
}
}
return roomieNames;
}
该函数应该获取名称以逗号分隔的单元格列表和 return 以及所有名称的单个列表。
例如:
James
Reese, Peter
Ryan, Monica
Reba
Nick
应该产生
James
Reese
Peter
Ryan
Monica
Nick
但是我似乎在将 单元格值 转换为 字符串值 时遇到了问题,它说 "Internal error executing the custom function" 没有给出我比那更具体。以下更基本的程序确实按预期工作:
function namesSimple(nameCells) {
var roomieNames = new Array();
for (i = 0; i < nameCells.length; i++) {
roomieNames.push(nameCells[i]);
}
return roomieNames;
}
然而,以下内容会产生第 4 行注释中的错误:
function namesBroken(nameCells) {
var roomieNames = new Array();
for (i = 0; i < nameCells.length; i++) {
var splitted = nameCells[i].split(", "); //TypeError: Cannot find function split in object James. (line 4).
for (k = 0; splitted.length; i++) {
roomieNames.push(splitted[i]);
}
}
return roomieNames;
}
这让我相信我需要将对象转换为字符串,但如上所述,这似乎也不起作用。
我尝试使用谷歌搜索铸造技术并认为这应该有效。我也试过了。toString()
;没有运气。有人可以帮帮我吗?谢谢:)
根据 api 文档 (https://developers.google.com/sheets/api/guides/values),单元格范围请求的响应作为 'ValueRange' 对象返回。
数据表示:
{
"range": string,
"majorDimension": enum(Dimension),
"values": [
array
],
}
https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values#resource-valuerange
值是 ListValue
的数组:https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.ListValue
ListValues 表示一个 Value
对象,它将具有以下值之一:(https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.Value)
null_value NullValue Represents a null value.
number_value double Represents a double value.
string_value string Represents a string value.
bool_value bool Represents a boolean value.
struct_value Struct Represents a structured value.
list_value ListValue Represents a repeated Value.
文档说:
Value represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of that variants, absence of any variant indicates an error.
看看这个自定义函数是否有效:
function namesSimple(values) {
return values.toString().split(",").map(function (r) {
return r.trim();
}).filter(String);
}
在您的电子表格中输入
=namesSimple(A1:A20)
问题在于嵌套的 for 循环(我需要使用任何 IDE 来捕捉这些错误)
function names(nameCells) {
var roomieNames = new Array();
for (i = 0; i < nameCells.length; i++) {
var str = String(nameCells[i]);
var splitted = str.split(", ");
for (k = 0; splitted.length; i++) { //should be for (k = 0; splitted.length; k++)
roomieNames.push(splitted[i]); //should be roomieNames.push(splitted[k])
}
}
return roomieNames;
}