显示Google电子表格中有多少重复字词

时间:2014-12-10 14:08:04

标签: google-apps-script google-sheets

我有一个练习:

删除列表DOUBLOONS

创建Object类型的变量: var myObject = {} 要么 var myObject = new Object()

使用Service SpreadsheetApp获取水果列表。

固定二维数组并返回,在对象中为每个新水果创建一个新条目。

如果已经列出了水果,则增加1,该水果的计数器值。

myObject的结构示例: myObject = { “Apple”:1, “梨子:4 ...接送时段 } dropoff window

完成所有水果后,扣到myObject以构建一个包含2列(水果,列表中出现次数)的数据范围,并在D和E列中显示结果。

指示: 使用测试:if(myFruit in myObject){}来测试结果是否已经列出。

这是电子表格:

http://i.stack.imgur.com/DV4E1.png

结果必须是这样的:

http://i.stack.imgur.com/rqDFG.png

这个我的代码我被阻止了我现在不做什么请帮帮我

//VARIABLE GLOBALE : DECLARATION DES FEUILLES

var ui = SpreadsheetApp.getUi();
var mySpread = SpreadsheetApp.getActiveSpreadsheet();

    // AJOUTE UN MENU PERSONNALIÉ DANS LA SPREADSHEET
    function onOpen(e) {
      ui.createMenu('Third-Step')
      .addItem('Del duplicates', 'deldup')
      .addToUi();
    }
    //SUPPRIMER LES DOUBLONS D’UNE LISTE

    function deldup() {
      var sheet =   SpreadsheetApp.getActiveSheet();
      var result = [];

      if (sheet != null){
      var myFruit =    sheet.getRange(1, 1, sheet.getLastRow(), 3).getValues();
                       sheet.getRange(1, 4, sheet.getLastRow() - 1, 2).clearContent()
      var i =0;
      var myObject =  {
                   "Pomme":[i],
                   "Poire":[i],
                   "Banane":[i],
                   "Pêche":[i],
                   "Carotte":[i]

                                 };                   
               for (var i=0; i< myObject.length; i++){



                 if(myFruit in myObject){

                  i += 1;
                 }
              result.push(myObject);
              } 
        sheet.getRange(1, 4, result.length, result[0].length).setValues(result);
      }

         else {
        sheet.toast("The Sheet is empty !!")
         }


    }

2 个答案:

答案 0 :(得分:1)

你好我的问题得到了很好的答案,对象必须是空的,所以如果有人需要它你可以检查它

//VARIABLE GLOBALE : DECLARATION DES FEUILLES

var ui = SpreadsheetApp.getUi();
var mySpread = SpreadsheetApp.getActiveSpreadsheet();

// AJOUTE UN MENU PERSONNALIÉ DANS LA SPREADSHEET
function onOpen(e) {
  ui.createMenu('Third-Step')
  .addItem('Del duplicates', 'deldup')
  .addToUi();
}
//SUPPRIMER LES DOUBLONS D’UNE LISTE

function deldup(){

  var sheet =    SpreadsheetApp.getActiveSheet();
  var myObject = {};
  var myFruit =  sheet.getRange(1, 1, sheet.getLastRow(), 3).getValues();

  sheet.getRange(1, 4, sheet.getLastRow() , 2).clearContent();

  for (var i=0; i< myFruit.length; i++){
    for(var j=0; j < myFruit[i].length; j++){

      if (myFruit[i][j] && myFruit[i][j] != "" && myFruit[i][j] != null ){

        if (myFruit[i][j] in myObject){
          myObject[myFruit[i][j]]++
        }else{
          myObject[myFruit[i][j]] = 1
        } 
      }
    }
  }

  var result = [];

  for (var fruit in myObject){   
    result.push([
      fruit,
      myObject[fruit]
    ])   
  } 

  sheet.getRange(1, 4, result.length, 2).setValues(result);
}

希望有所帮助。

答案 1 :(得分:0)

您可以尝试使用此代码(已测试并正常工作):

function deldup(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var i=0;
  var results =[["Pomme", i], ["Poire", i], ["Pêche", i]   ];
  if (sheet != null){

  var myFruit = sheet.getRange(1, 1, sheet.getLastRow(), 3).getValues();
  sheet.getRange(1, 4, sheet.getLastRow() - 1, 2).clearContent();
  var flag = 0;

    for (var i=0; i< myFruit.length; i++){
        for(var j=0; j < myFruit[i].length; j++){
            if(results.length != 0){
                for(var k=0; k < 10; k++){
                   if(myFruit[i][j] == results[k][0]){
                        results[k][1]++;
                        flag = 1;
                        break;
                    }
                  if(flag == 0 ){
                    results.push([myFruit[i][j], 1]);
                  }
               }
           }
           else
           results.push([myFruit[i][j], 1]);
        }
     }
  sheet.getRange(1, 4, results.length, 2).setValues(results);
   }
  else {
    sheet.toast("The Sheet is empty !!")
  }
}

希望有所帮助!