复制&复制到另一个工作表时,修改每个表单提交的特定值

时间:2015-07-01 06:16:06

标签: javascript google-sheets

我遇到了两个独立方需要访问相同数据的情况,但是使用数据的后端需要不同的格式,例如:一方需要看“足球”,另一方需要看“1”。 此输入来自各种用户通过Google表单。

我之前运行了一个时间间隔脚本,它将复制工作表1中的所有数据,然后将其复制到工作表2,然后双循环将踢(使用var i)来搜索所有列并替换工作表2上的特定字符串用数值。 这个脚本有效,但由于效率低下,一旦我开始拥有更多数据,它就会崩溃。

所以我试图通过处理来自每个表单提交的数据来减少数据集。 我尝试了两种不同的方法: 1)抓取值以复制,修改值,然后复制到新工作表 2)抓取值进行复制,复制到新工作表,然后修改这些新值(lastrow)

我知道复制位在我编写的两个脚本中都有效,但我的修改没有,当使用调试器时,它显示修改后的数据与原始数据相同,这实际上是复制相同的情况。 我意识到我可能犯了一个非常基本的错误,但我对它是什么一无所知。在Stackoverflow和其他网站上搜索类似的线程我没有达成解决方案。

当前代码:

function onFormSubmit(e){


  var responses = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  var projects =  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
  var row = responses.getLastRow();
  var col = responses.getLastColumn();
  var copy = responses.getRange(row, 1, 1, col)
  var modify = copy.getValues();
  for (var i=0; i < modify.length; i++){
    if (modify [i] == "SearchString1"){
        modify [i] = "1";
      }
      else if (modify [i] == "SearchString2"){
        modify [i] = "0";
      }
      else if (modify [i] == "SearchString3"){
        modify [i] = "1";
      }
  projects.appendRow(modify);
    }
}

此代码将复制数据,但不会对其进行修改。 我有一个变体,我使用.setvalues,但结果相同。

1 个答案:

答案 0 :(得分:0)

解决了,所有关于位置标识符。 getvalues创建了一个double数组,append在循环中而不是在它之外。我必须更好地指定附加和修改。

固定代码:

  for (var i=0; i < modify[0].length; i++){
    if (modify[0][i] == "SearchString1"){
        modify[0][i] = "1";
      }
      else if (modify[0][i] == "SearchString2"){
        modify[0][i] = "0";
      }
      else if (modify[0][i] == "SearchString3"){
        modify[0][i] = "1";
      }
    }
  projects.appendRow(modify[0]);
}