Google Sheets копирует определенные поля на новый лист, если запись не существует - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь автоматизировать процесс добавления записей с листа 1 на лист 2, если запись еще не существует на листе 2.

На листе 1 есть 20 столбцов, однако мне нужны только столбцы A, D,E & F скопировано на лист 2

Столбец A - это номер участника, и это поле, которое я хотел бы использовать, чтобы проверить, существует ли запись на листе 2 или нет для начала копирования.

У меня очень ограниченные навыки кодирования, поэтому я ищу помощь от этого удивительного сообщества.

Sheet1

+------+----------+-------+------+------------+-----------+
| ID   | Date     | Time  | Sal. | First Name | Last Name |
+------+----------+-------+------+------------+-----------+
| 1234 | 05/12/19 | 16:00 | Mr.  | John       | Doe       |
| 0001 | 05/12/19 | 17:00 | Mrs. | Jennifer   | Lawrence  |
| 1234 | 05/13/19 | 16:00 | Mr.  | John       | Doe       |
| 1233 | 05/13/19 | 16:00 | Mr.  | Johnny     | Deep      |
+------+----------+-------+------+------------+-----------+

Sheet2

+------+------+------------+-----------+
|  ID  | Sal. | First Name | Last Name |
+------+------+------------+-----------+
| 1234 | Mr.  | John       | Doe       |
| 0001 | Mrs. | Jennifer   | Lawrence  |
| 1233 | Mr.  | Johnny     | Deep      |
+------+------+------------+-----------+

Здесьэто код, который я пробовалОн копирует только первый столбец.Как мне получить его, чтобы скопировать столбцы 4, 5 и 6?

function copy_Guest_info() {
  var spreadsheet, sheet, sheet2, endrow, 
endcol,endrow2,endcol2,data,data2,resultArray,n,l,l2,p,doesNotExist,
  sheetOneValue, numberOfMissingValues, innerArray,i,thisValue;

  spreadsheet = 
SpreadsheetApp.openById('1L3XjJvgruB_JNZWd2Vo2Tz32cc3quzhlIjSaPkOvV10');

  sheet = spreadsheet.getSheetByName("Reservations");
  sheet2 = spreadsheet.getSheetByName("LCAH Guest Profile");

  endrow = sheet.getLastRow();
  endcol = sheet.getLastColumn();
  endrow2 = sheet2.getLastRow();
  endcol2 = sheet2.getLastColumn();

  data = sheet.getRange(1, 1, endrow, 1).getValues();
  //getRange(start row, start column, number of Rows, number of Columns)
  data2 = sheet2.getRange(1, 1, endrow2, 1).getValues();
  data2 = data2.toString().split(","); //Flatten the 2D array to one D

  resultArray = [];
  innerArray = [];
  l = data.length;
  l2 = data2.length;

  for (n=0;n<l;n+=1) {
    sheetOneValue = data[n][0];
    innerArray = []; //Reset

    for (p=0;p<l2;p+=1) {
      doesNotExist = data2.indexOf(sheetOneValue) === -1;//If the value is 
NOT found, indexOf returns -1  
      if (!doesNotExist) break; //If it exists in the list, no need to go 
any further
      if (doesNotExist) {//If the value in the cell from data one does NOT 
exist in data two, add it to the array

        innerArray.push(sheetOneValue)
        resultArray.push(innerArray);
        Logger.log('sheetOneValue: ' + sheetOneValue);
        break ;
      };
    };
  };

  endrow2 = 0;
  for (i=0;i<l;i+=1) {
    thisValue = data2[i];
    if (thisValue==="" || thisValue=== undefined) {//There is nothing in 
this cell
      continue;
    };
    endrow2+=1;
  };
  //Append the data in the array to the bottom of the data two list
  sheet2.getRange(endrow2+1, 1,resultArray.length,1).setValues(resultArray);

  Logger.log(resultArray);  
};

1 Ответ

0 голосов
/ 08 мая 2019

возможно попробуйте эту простую формулу в Листе 2:

=QUERY('Sheet1'!A:F); "select A,D,E,F"; 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...