我正在 Google Docs 中运行一个项目,我需要脚本方面的帮助。我需要一个能够在两列电子表格中执行以下任务的人。
- 在每个现有数据行之间插入一个新的空白行。
- 将第二列中的数据下移一位,使它们占据新插入的空白行
- 将大括号{}添加到第二列数据中的文本即 anytext--> {anytext}
以下是它应该如何工作的示例:示例 GDocs 电子表格
我正在 Google Docs 中运行一个项目,我需要脚本方面的帮助。我需要一个能够在两列电子表格中执行以下任务的人。
以下是它应该如何工作的示例:示例 GDocs 电子表格
您的问题与我刚刚尝试回答的上一个问题相距不远,所以我可以继续并提出一个可行的解决方案来解决这个(简单的)问题......所以它就是这样,不是最优雅但最简单且有效的。
function insertBlank() {
var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
var last = lastRowinCol(sh,'A');
var colA = sh.getRange('A1:A'+last).getValues();
var colB = sh.getRange('B1:B'+last).getValues();
var nA = [];
var nB = [];
for(n=0;n<last;++n){
nA.push([colA[n]])
nA.push(['']);
nB.push([''])
nB.push(['{'+colB[n][0]+'}']);
}
Logger.log(nA.length+' = '+nA)
Logger.log(nB.length+' = '+nB)
sh.getRange(1,1,nA.length,1).setValues(nA);
sh.getRange(1,2,nB.length,1).setValues(nB);
}
function lastRowinCol(sh,col){
var coldata = sh.getRange(col+'1:'+col).getValues();
for(var c in coldata){if(coldata[c][0]==''){break}}
return c
}
也就是说,您最好提出更合适的问题,并表明您已经尝试过,然后才能免费购物;-)
编辑:在 Mogsdad 对另一篇文章发表非常相关的评论之后,我建议您用他的代码替换 for-next 循环,function lastRowinCol
该代码向后迭代,以便处理列中的空单元格。此外,他的代码有一个有趣的结构,因为循环限制和条件在同一个语句中。
function lastRowinCol(sh,col){
var coldata = sh.getRange(col+'1:'+col).getValues();
for (var c=coldata.length; (c) && coldata[c-1][0]==''; c--) {}
return c
}