1

拷贝一些值我看过这两个环节Google Script: Conditionally copy rows from one spreadsheet to anotherhttps://stackoverflow.com/a/4809413/1526044和努力后,我不能够做什么,我需要。谷歌脚本选择和电子表格比较另一列上的另一片

我有一个电子表格,在一张纸张上的一些数据。 我也有与列的关键信息的另一片这种方式比较:

KEY Value1 Value2 Value3 
AAA B  C  D 
BBB Y  Z  W 

我需要按行检查我的数据电子表格行寻找上的键板的列值的值的功能。当找到任何值时,它会在DATA电子表格的第一列(同一行)上写下KEY值。

例子: 数据电子表格

empty text text text B 
empty text text text text 
empty text C text text 
empty text text text Y 

所以剧本后,数据会看起来像这样:

AAA text text text B 
empty text text text text 
AAA text C text text 
BBB text text text Y 

任何其他建议,使这个可以理解。 非常感谢。

+0

你可以发布你已经尝试的代码? – Srik 2012-07-15 18:40:11

+0

不确定它会有所帮助。 :( – darkpollo 2013-04-16 18:27:35

回答

1

我修改了一个类似的脚本我最近回答了应该做你所需要的。我没有测试,但你可以试试看。有一些意见来解释这个想法......它可能需要一些调试。

编辑:我这个打得四处和调试有点更;-)所以它似乎现在需要工作 - 这里是the link to my test sheet

function xxx(){ 
/* we have an array 'keysheet' 
    and an array datasheet , you get these with something like*/ 
     var keysheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getDataRange().getValues(); 
    // and 
     var datasheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[1].getDataRange().getValues();// if other columns, change index values in the arrays : 0=A, 1=B ... 
    // the iteration could be like this : 
       for(i=0;i<datasheet.length;++i){ // don't miss any data 
       for(j=0;j<keysheet.length;++j){ // iterate through keysheet to find the keys 
        for(k=1;k<keysheet[0].length;++k){ // iterate in keysheet row to check every column except first one 
         var key = keysheet[j][k] 
         Logger.log(k+' '+key+" "+datasheet[i].toString().match(key)) 
       if(datasheet[i].toString().match(key) == key){// check whole rows to find if key is in data 
        var x = datasheet[i].shift(); 
        datasheet[i].unshift(keysheet[j][0]) // if match found, replace first element in datasheet with fisrt element in keysheet 
        break // if found break k loop maybe you should also break j loop ? 
         } 
       } 
        } //loop keysheet 
      } // loop datasheet 

      /* now you have a modified datasheet array that can directly overwrite the old datasheet 
      using setValues() */ 
      var sh = SpreadsheetApp.getActiveSpreadsheet().getSheets()[1];// assuming the datasheet sheet is sheet nr2 
      Logger.log(datasheet) 
      sh.getRange(1,1,datasheet.length,datasheet[0].length).setValues(datasheet); 
       } 
     // 
+0

谢谢,我会尝试。对不起,延迟回复 – darkpollo 2013-04-16 18:27:06

相关问题