как исправить мое копирование диапазона данных в другие файлы в скрипте приложения Google

#google-apps-script

#google-apps-script

Вопрос:

я должен скопировать свой лист из file1 (16aWONG-TyHYxYFYqfDI7Pw2PVuNvDQ0cnFoIv_SDA4U) в file2 (1zieqvquc7rl xy9sb—SaNaEXKT399NvffM3F3nfAXGs) у меня есть этот скрипт, но он не сработал, я не знаю, куда поместить fromfile

 function getdata() {
    var files = DriveApp.getFileById("1zIeqvQuC7RlXy9SB--SaNaEXKT399NvffM3F3nfAXGs").getFiles()
    while (files.hasNext()) {
      var file = files.next();
      var shoot = SpreadsheetApp.openById(file.getId());
      
      var sourcesheet = SpreadsheetApp.getActive().getSheetByName("BahanMix");
      var sourcerange = sourcesheet.getRange('A:D');
      var sourcevalues = sourcerange.getValues();
      
    var destsheet = shoot.getSheetByName('Sheet23'); 
    var destrange = destsheet.getRange('A:D'); 
    destrange.setValues(sourcevalues);         
 }
 }
 

Ответ №1:

Я бы придерживался spreadsheet app варианта использования диска в качестве исходного кода. Я думаю, вы можете получить то, что хотите, с помощью приведенного ниже кода. Я включил проверку, чтобы убедиться, что количество строк одинаковое.

 function getDate() {
  var fromFile = SpreadsheetApp.openById("16aWONG-TyHYxYFYqfDI7Pw2PVuNvDQ0cnFoIv_SDA4U");
  var targetFile = SpreadsheetApp.openById("1zIeqvQuC7RlXy9SB--SaNaEXKT399NvffM3F3nfAXGs");

  var sourcesheet = fromFile.getSheetByName("BahanMix");
  var sourcerange = sourcesheet.getRange('A:D');
  var sourcevalues = sourcerange.getValues();
      
  var destsheet = targetFile.getSheetByName('Sheet23'); 
  var destrange = destsheet.getRange('A:D');
  //make sure the same number or rows exist
  if (destsheet.getMaxRows()!= sourcesheet.getMaxRows()){
    Browser.msgBox("Row MisMatch. Destination has "   
    destsheet.getMaxRows()   " rows while source has "  
    sourcesheet.getMaxRows())   " rows."
  }else{
  destrange.setValues(sourcevalues);
  }
}
 

Комментарии:

1. Привет, спасибо за помощь, он выдает небольшую ошибку, что количество строк должно быть точно таким же. Как насчет того, чтобы он не смотрел на длину строки?

2. К сожалению, если вы добавляете в Google таблицы более одного значения, вам необходимо указать точное количество строк и столбцов. Спасибо, что согласились.

Ответ №2:

Поскольку вы используете getActive() свой скрипт, он привязан к вашей исходной электронной таблице, поэтому SpreadsheetApp его можно использовать непосредственно для открытия файлов.

 function getdata() {
    var shoot = SpreadsheetApp.openById("1zIeqvQuC7RlXy9SB--SaNaEXKT399NvffM3F3nfAXGs");
      
    var sourcesheet = SpreadsheetApp.getActive().getSheetByName("BahanMix");
    var sourcerange = sourcesheet.getRange('A:D');
    var sourcevalues = sourcerange.getValues();
      
    var destsheet = shoot.getSheetByName('Sheet23'); 
    var destrange = destsheet.getRange('A:D'); 
    destrange.setValues(sourcevalues);         
}