Скопируйте результаты функции запроса из одного листа и добавьте его в конец другого листа в другом файле. - PullRequest
0 голосов
/ 23 сентября 2019

Можно ли выбрать результаты функции QUERY (= запрос (Dom, "select * WHERE G не равен NULL")) из листа Google и добавить его в конце другого листа Google?Ошибка: «Не удается найти метод openById (строка, строка). У меня в основном два листа Google в двух разных местах, и оба они в формате плоского файла. У меня нет опыта кодирования, и я пытался решить эту проблему в течение нескольких недель,был бы очень признателен, если бы кто-нибудь мог мне помочь.

function Dom() {
var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getSheetByName('Dom_Sum').showSheet()
  .activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Dom_Sum'), true);

  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getCurrentCell().offset(1, 0).activate();
  var currentCell = spreadsheet.getCurrentCell();
  spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.DOWN).activate();
  currentCell.activateAsCurrentCell();
  currentCell = spreadsheet.getCurrentCell();
  spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.NEXT).activate();
  currentCell.activateAsCurrentCell();
  currentCell = spreadsheet.getCurrentCell();
  spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.NEXT).activate();
  currentCell.activateAsCurrentCell();
  currentCell = spreadsheet.getCurrentCell();
  spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.NEXT).activate();
  currentCell.activateAsCurrentCell();
  currentCell = spreadsheet.getCurrentCell();
  spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.NEXT).activate();
  currentCell.activateAsCurrentCell();


 var source = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = source.getSheets()[0];
 var destination = SpreadsheetApp.openById("17J0_YiUANs9CZNmq2tqqvwjdAT2P8IVcx3NYljhqTFk","Master_Db!A1");
  spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.DOWN).activate();
  spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.DOWN).activate();
  spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.UP).activate();
  spreadsheet.getCurrentCell().offset(1, 0).activate();
 sheet.copyTo(destination);


  spreadsheet.getSheetByName('Dom_Sum').hideSheet()

  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getSheetByName('Indent Form_Dom').showSheet()
  .activate();
  spreadsheet.getRangeList(['C4:D9', 'A12:M112']).activate()
  .clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getRange('C4').activate();


};

1 Ответ

0 голосов
/ 23 сентября 2019

Вы предоставляете два параметра для openById () , когда он допускает только один.

Кроме того, если я вас правильно понимаю, вы просто хотите скопировать (ненулевые) данные изстолбец G. на другой лист.

Если это так, вы можете попробовать это:

function Dom() {
  var origin_sheet = SpreadsheetApp.getActive().getSheetByName('Dom_Sum');
  var firstRow = 1;
  var firstCol = 7;
  var numRows = origin_sheet.getLastRow();
  var numCols = 1;
  var origin_values = origin_sheet.getRange(firstRow, firstCol, numRows, numCols).getValues();
  var dest_values = [];
  for(var i = 0; i < origin_values.length; i++) {
    if(origin_values[i][0] != '') {
      dest_values.push(origin_values[i]);
    }
  }
  var dest_id = "1ZGq7L7bvF1INuDgZxhHnVsihkYkYubmncSAE5uC-Pq4";
  var dest_sheet = SpreadsheetApp.openById(dest_id).getSheetByName("Master_Db");
  var numRowsDest = dest_values.length;
  var dest_range = dest_sheet.getRange(1, 1, numRowsDest, 1);
  dest_range.setValues(dest_values);
}

Если это не то, что вы хотели, извините.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...