Loops 搜索值,如果存在值,则添加一行,并在google电子表格中复制数据
我想在某一列中搜索一个单词,然后如果该值存在,我想复制下一行及其值,并将该单词更改为两个不同的单词。 我的问题是让找到的单词行号在下面插入一行Loops 搜索值,如果存在值,则添加一行,并在google电子表格中复制数据,loops,google-apps-script,google-sheets,for-of-loop,Loops,Google Apps Script,Google Sheets,For Of Loop,我想在某一列中搜索一个单词,然后如果该值存在,我想复制下一行及其值,并将该单词更改为两个不同的单词。 我的问题是让找到的单词行号在下面插入一行 function myFunction() { var ss = SpreadsheetApp.openById("1fE404JUbw3aytlqtoht6FfrIhYhTpSe2MM5UDnBkFc4"); var sheet = ss.getSheets()[0] let range = sheet.getDataRange(); var valu
function myFunction() {
var ss = SpreadsheetApp.openById("1fE404JUbw3aytlqtoht6FfrIhYhTpSe2MM5UDnBkFc4");
var sheet = ss.getSheets()[0]
let range = sheet.getDataRange();
var values = range.getValues();
var typeRange = sheet.getRange("E2:E");
var typeValues = typeRange.getValues();
var i;
for(i = 0; i <= lastRow ; i++){
for (let type of typeValues){
if (type == "Both"){
var bothRow = i+1;
}
//// var bothRow = sheet.getRange(i+1,1,1,typeValues[i].length);
//// ss.insertRowsAfter(bothRow, 1);
}
}
}
函数myFunction(){
var ss=电子表格应用程序openById(“1fE404JUbw3aytlqtoht6FfrIhYhTpSe2MM5UDnBkFc4”);
var sheet=ss.getSheets()[0]
let range=sheet.getDataRange();
var values=range.getValues();
var typeRange=sheet.getRange(“E2:E”);
var typeValues=typeRange.getValues();
var i;
对于(i=0;我回答:
.getValues()
返回一个二维值数组,您可以像一维数组一样引用它
代码修复:
您需要更改条件,以便检查的对象是数组:
if (type == "Both"){
//code
}
应该是:
if (type == ["Both"]){
//code
}
添加行并将数据复制到其中:
您可以使用insertRowsAfter()
在工作表中的给定行之后添加一行,并使用.getRange().setValues()
复制数据:
for(var i = 0; i <= lastRow ; i++){
for (let type of typeValues){
if (type == ["Both"]){
var bothRow = i + 1;
ss.insertRowsAfter(bothRow, 1);
// increment lastRow as there is now one more row in the sheet
lastRow++;
// increment i as you want to skip the row you just copied!
i++;
var rangeToCopy = sheet.getRange(bothRow + ':' + bothRow).getValues();
sheet.getRange((bothRow + 1) + ':' + (bothRow + 1)).setValues(rangeToCopy);
}
}
}
for(变量i=0;我回答:
.getValues()
返回一个二维值数组,您可以像一维数组一样引用它
代码修复:
您需要更改条件,以便检查的对象是数组:
if (type == "Both"){
//code
}
应该是:
if (type == ["Both"]){
//code
}
添加行并将数据复制到其中:
您可以使用insertRowsAfter()
在工作表中的给定行之后添加一行,并使用.getRange().setValues()
复制数据:
for(var i = 0; i <= lastRow ; i++){
for (let type of typeValues){
if (type == ["Both"]){
var bothRow = i + 1;
ss.insertRowsAfter(bothRow, 1);
// increment lastRow as there is now one more row in the sheet
lastRow++;
// increment i as you want to skip the row you just copied!
i++;
var rangeToCopy = sheet.getRange(bothRow + ':' + bothRow).getValues();
sheet.getRange((bothRow + 1) + ':' + (bothRow + 1)).setValues(rangeToCopy);
}
}
}
用于(var i=0;i问题是什么?发生了什么而不是应该发生什么?有错误吗?我注意到它没有进入if条件!问题是什么?发生了什么而不是应该发生什么?有错误吗?我注意到它没有进入if条件!这对我来说很有效,你也可以建议吗关于将数据复制到与条件匹配的行的最后一行?为什么ss.insertRowsAfter(bothRow,1)
不合适?如果只插入一行,则ss.insertRowsAfter(bothRow)
应该足够了。无论何时插入,您都需要在lastRow中添加1,否则循环将无法到达工作表的末尾。但我想复制符合条件的行的数据,并将其粘贴到新行。我已更新了我的答案,将其包括在内,很高兴能够提供帮助!这对我有效,您还可以建议复制吗与条件匹配的行的最后一行的数据?为什么ss.insertRowsAfter(bothRow,1)
不合适?如果只插入一行,则ss.insertRowsAfter(bothRow)
应该足够了。无论何时插入,您都需要在lastRow中添加1,否则循环将无法到达工作表的末尾。但我想复制符合条件的行的数据并将其粘贴到新行。我已更新了我的答案,将其包括在内,很高兴能够提供帮助!