通过Appscript将行复制到另一个工作表

时间:2015-07-20 21:49:09

标签: google-apps-script google-sheets

function copyRows() {

  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = sheet.getLastRow() - 1;   // Number of rows to process

  // Fetch the range of cells A2:B3
  var dataRange = sheet.getRange(startRow, 1, numRows, 100);
  dataRange.activate();

  // Fetch values for each row in the Range.
  var data = dataRange.getValues();


  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[1];  // First Column
    var title = row[6];



  if (title.contains("SVP" || "VP" || "Director" || "director" || "CEO" || "Founder" || "owner")) {
     var ss = SpreadsheetApp.getActiveSpreadsheet();
     var destination = ss.getSheetByName("Director's, VP's, CEOs, SVP's - MANUAL");

       var range = destination.getRange("A2:D1000");

         row.copyValuesToRange(startRow, 1, numRows, 100);
    }
  }
}

以下是电子表格的屏幕截图:

screenshot

不确定我缺少什么,但代码似乎没有工作......说它有错误:

  

无法找到包含在对象中的函数Associate Account Strategist。

1 个答案:

答案 0 :(得分:1)

错误信息不是骗你的。

Cannot find function contains in object Associate Account Strategist.
            ^^^^^^^^^^^^^^^^^           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

错误消息也会带有行号,这会指向解释器确定存在错误的位置。可能这一行:

if (title.contains("SVP" || "VP" || "Director" || "director" || "CEO" || "Founder" || "owner")) {

这是JavaScript和Google Apps脚本中的有效语法,但它没有按照您的想法执行。

错误消息显示您有一个对象包含&#34; Associate Account Strategist&#34; - 此时您的代码中的字符串来自row[6]。您尝试使用String.contains()方法。这是相当新的,在ECMA 6中引入 - 但Google Apps脚本尚未支持。这就是找不到名为contains的函数的原因。

选项在How to check whether a string contains a substring in JavaScript?

中描述

您尝试使用contains的方式也不对。您的期望可能是您会发现title是否包含&#34; SVP&#34;或&#34; VP&#34;等等。相反,会发生的是所有字符串将OR组合在一起,评估为true。然后,您将留下if (title.contains(true))...,无论字符串title是什么,它始终会评估相同的内容。您需要单独进行每次比较,可能是通过数组循环来减少代码。