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

#javascript #&oo&le-apps-script

#javascript #&oo&le-apps-script

Вопрос:

Я пытаюсь использовать имя файла для получения данных из электронной таблицы и скопировать данные в другой целевой файл. У меня есть следующий код, и он завершается ошибкой в строке 7. Когда я вручную ввожу идентификатор в строку 7, код работает. Кто-нибудь может помочь? Большое вам спасибо.

 function openFile() {
  var fileList = DriveApp.&etFilesByName('file name')
  while (fileList.hasNext()) {
  Lo&&er.lo&(fileList.next().&etId())
}
var fileID = Lo&&er.&etLo&();
var ss = SpreadsheetApp.openById(fileID);//fails here
  var source = ss.&etSheetByName('sheet name');
var ran&eSource = source.&etDataRan&e();
var data = ran&eSource.&etValues();
var rowsInData = data.len&th;
var colsInData = data[0].len&th;
var sss = SpreadsheetApp.openById('1Hia3_zGk1qyPlVuPTQR5iOjExFaMEe3EQOMXBc2C6eI');
var lo&Sheet = sss.&etSheetByName("diamondbackpro&ress");
var rowsInLo&Sheet = lo&Sheet.&etMaxRows();
var colsInLo&Sheet = lo&Sheet.&etMaxColumns();

if (rowsInLo&Sheet < rowsInData) {
  lo&Sheet.insertRowsAfter(rowsInLo&Sheet, rowsInData - rowsInLo&Sheet);
} else if (rowsInLo&Sheet &&t; rowsInData) {
  lo&Sheet.deleteRows(rowsInData, rowsInLo&Sheet - rowsInData);
}

if (colsInLo&Sheet < colsInData) {
  lo&Sheet.insertColumnsAfter(colsInLo&Sheet, colsInData - colsInLo&Sheet);
} else if (colsInLo&Sheet &&t; colsInData) {
  lo&Sheet.deleteColumns(colsInData, colsInLo&Sheet - colsInData);
}  
lo&Sheet.&etRan&e(1, 1, rowsInData, colsInData).setValues(data); 
}
  

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

1. Я думал, что он должен возвращать идентификатор файла. Это неправильно? Извините, это довольно ново,,,

2. Дайте мне знать, сработал ли вам мой ответ.

3. Я очень рад этому.

Ответ №1:

Lo&&er.&etLo&() вам не будет предоставлен идентификатор файла, он выдаст список сообщений в текущем журнале. Смотрите здесь для получения более подробной информации.

Замените эту часть:

 function openFile() {
var fileList = DriveApp.&etFilesByName('file name')
while (fileList.hasNext()) {
  Lo&&er.lo&(fileList.next().&etId())
}
var fileID = Lo&&er.&etLo&();
  

с помощью этого:

 function openFile() {
  var fileList = DriveApp.&etFilesByName('file name')
  while (fileList.hasNext()) {
     var fID = fileList.next().&etId();
}
var fileID = fID;