用于添加行,移位数据和为Google文档电子表格添加字符的脚本

时间:2013-03-04 17:44:54

标签: google-apps-script

我正在Google文档中运行一个项目,我需要一个脚本帮助。我需要一个能在两列电子表格中执行以下任务的工作。

  1. 在每个现有数据行之间插入一个新的空白行。
  2. 将第二列中的数据向下移动一个位置,以便它们占据新插入的空白行
  3. 将大括号{}添加到第二列的数据中的文本,即 anytext - > {anytext}
  4. 以下是一个如何工作的示例:Sample GDocs spreadsheet

1 个答案:

答案 0 :(得分:1)

你的问题与我刚刚尝试回答的前一个问题相差不远,所以我可以继续并建议一个解决这个(简单)问题的工作解决方案...... 所以它不是最优雅,而是容易和工作。

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
  }

那就是说,你应该最好提出更合适的问题并表明你已经尝试过,然后再免费购物; - )


编辑:跟随一个非常相关的comment from Mogsdad on this other post我建议你用function lastRowinCol中的for-next循环替换他向后迭代的代码,以便它处理空单元格柱。此外,他的代码有一个有趣的结构,因为循环限制和条件在同一个语句中。

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
 }