如何解决使用Google Apps脚本复制工作表范围中的某些行 说明:问题:解决方案:代码示例:
我的key -> {list of values}
脚本中有一个字典
我有一张纸,上面有这些标题:
key,name
我想遍历工作表中的某个范围并添加值行。
说:
k1 -> val1,val2
k2 -> val3
我看到了这个post
问题在于,在迭代时我会更改范围。 如何有效地做到这一点?
var rangeValues = searchRange.getValues();
// Loop through array and if condition met,add relevant
// background color.
for ( i = 0; i < lastColumn - 1; i++){
for ( j = 0 ; j < lastRow - 1; j++){
var kw_data = kw_to_label[rangeValues[j][i]];
解决方法
我尝试进行某些操作时并没有明确说明。我认为您的值列表已硬编码在脚本中。基本上,您要做的是创建一个新的结果数组并将新值设置为所需范围。 这未经测试,但是这个想法或多或少:
const dictionnary = {
'k1': ['val1','val2'],'k2': ['val3']
}
//range in the graphic where you have key and name so always 2 columns
const values = searchRange.getValues()
//future values to populate the spreadsheet with will be a 2D arrya at the end
const newValues = []
//loop through range where there is name and key
for (let row = 0; row < values.length; row++)
//check if key is inside the dictionnary
if (values[row][0] in dictionnary){
//get the list of values inside your dictionnary by key
const tmpArr = dictionnary[values[row][0]]
//loop through list
for (let lign = 0; lign < tmpArr.length; lign++)
//create the new row and push it to newValues
newValues.push([values[row][0],values[row][1],tmpArr[lign]])
}
//generate the desired range of the size of newValues
const newRange = sheet.getRange(desiredRowIndex,desiredColumnIndex,newValues.length,newValues[0].length);
//set values inside range
newRange.setValues(newValues)
说明:
- 遍历源代码范围中的所有行。
- 对于每一行,检查相应的键是否在脚本对象中。
- 对于此键的值数组中的每个元素,将一个新的数组元素推入2D数组(
newValues
)。 - 通过setValues(values)将
newValues
写入工作表,其中范围的尺寸基于2D数组的尺寸。
问题:
- 您的工作表中有一个范围,每行两列,例如
key | name
。 - 您在脚本中有一个对象,该对象具有不同的
keys
(其中每个key
对应于前面提到的范围内的key
)和每个不同的{{1 }},例如key
。 - 您要修改原始范围,以便为键中的每个
"key1": ["value1","value2",...]
写入一个新行,例如value
,key1 | name1 | value1
等。
解决方案:
您可以执行以下操作:
- 使用for... in遍历对象中的所有键。
- 对于每个键,使用forEach和push遍历相应数组中的所有值,并将一个新的数组元素(值
key1 | name1 | value2
)遍历到2D数组(称为{{ 1}})。 - 遍历每个键之后,获得一个二维数组
key,name,value
的范围,并使用setValues(values)将newValues
的数据写入该范围。
代码示例:
newValues
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。