2015-07-20 62 views
1
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); 
    } 
    } 
} 

另一个表下面是电子表格的截图:复制行通过Appscript

screenshot

不知道我错过了什么,但代码似乎没有工作...说它有一个错误:

Cannot find function contains in object Associate Account Strategist.

+1

当您为问题添加标签时请注意。你已经使用了[[tag:appscript]]两次。该标签适用于某些Apple doo-dad。您想根据[Google Apps脚本支持页面](https://developers.google.com/apps-script/support)中的说明,使用[[tag:google-apps-script]]标记您的问题。请修改你的标签。您可能还需要[[tag:google-spreadsheet]]。 – Mogsdad

回答

1

错误消息不是骗你。

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

错误消息本来会带有一个行号,它会指向解释器确定存在错误的地方。可能是这条线:

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

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

错误消息显示您有一个包含“Associate Account Strategist”的对象 - 此时您的代码中将是来自row[6]的字符串。您正在尝试使用String.contains()方法。这是非常新的,在ECMA 6中引入 - 但不受Google Apps脚本支持。这就是为什么没有找到名为contains的函数。

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

你正在尝试使用contains的方式描述是不正确的,无论是。您的期望很可能是您会发现title是否包含“SVP”或“VP”等。相反,将会发生的情况是,所有字符串将一起为OR'd,其将评估为true。那么你会留下if (title.contains(true))...,这将始终评估为相同的事情,无论是什么字符串title是。您需要分别进行每个比较,可能是通过数组循环来减少代码。