Добавьте содержимое другой строки в файл .txt

#google-apps-script #google-sheets

#google-apps-script #google-sheets

Вопрос:

Я только что запустил скрипт для экспорта содержимого строки в файл .txt и поставил =, но теперь я хотел бы знать, как я могу добавить содержимое другой строки в файл .txt, как я покажу на скриншоте. 1

Это код, который у меня есть в настоящее время, но я не могу заставить его работать должным образом.

 function exporttotxt() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getActiveSheet();
  var range = sheet.getRange('G3:G'   sheet.getLastRow());
  var rows = range.getValues().filter(([g]) => g.toString() != "");
  var range2 = sheet.getRange('I3:I'   sheet.getLastRow());
  var rows2 = range2.getValues().filter(([i]) => i.toString() != "");
  var fileName="exported.txt";
  var folderName="Videos";
  var data = rows.splice(0);
  var data2 = rows2.splice(0);
  var str = data.map(function(e) {return e.join()}).join("=")   "="   data2.map(function(e) {return e.join()}).join("n");
  var content = str;

  // get list of folders with matching name
  var folderList = DriveApp.getFoldersByName(folderName);  
  if (folderList.hasNext()) {
    // found matching folder
    var folder = folderList.next();

    // search for files with matching name
    var fileList = folder.getFilesByName(fileName);

    if (fileList.hasNext()) {
      // found matching file - append text
      var file = fileList.next();
      var combinedContent = content;
      file.setContent(combinedContent);
    }
    else {
      // file not found - create new
      folder.createFile(fileName, content);
    }
  }
}  

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

1. Я не думаю, что вам нужно это делать filter(([g]) => g.toString() != "") , поскольку вы используете getLastRow() в своем диапазоне.

2. Что это для data.map(function(e) {return e.join()}).join("=") e — это просто массив, содержащий только один элемент

Ответ №1:

Я считаю, что ваша цель заключается в следующем.

  • Вы хотите создать текст, объединив значения столбцов «G» и «I».

В вашей ситуации, как насчет извлечения значений из столбцов «G» и «I» по одному getValues ? Благодаря этому стоимость процесса будет ниже, а сценарий станет немного проще. Когда это отражается в вашем скрипте, это выглядит следующим образом.

От:

 var range = sheet.getRange('G3:G'   sheet.getLastRow());
var rows = range.getValues().filter(([g]) => g.toString() != "");
var range2 = sheet.getRange('I3:I'   sheet.getLastRow());
var rows2 = range2.getValues().filter(([i]) => i.toString() != "");
var fileName="exported.txt";
var folderName="Videos";
var data = rows.splice(0);
var data2 = rows2.splice(0);
var str = data.map(function(e) {return e.join()}).join("=")   "="   data2.map(function(e) {return e.join()}).join("n");
var content = str;
  

Для:

 var range = sheet.getRange('G3:I'   sheet.getLastRow());
var rows = range.getValues().filter(([g, _, i]) => g.toString() != "" amp;amp; i.toString() != "");
var fileName="exported.txt";
var folderName="Videos";
var data = rows.splice(0);
var str = data.map(([g, _, i]) => `${g}=${i}`).join("n");
var content = str;
  

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

1. Спасибо, что он работает, но как я могу изменить ячейку вместо ячейки H на ячейку I? потому что я проверяю это, но я все еще получаю содержимое из ячейки H

2. @Miguel Спасибо за ответ. Из вашего ответа я заметил, что неправильно понял вашу цель. Я прошу прощения за это. Я обновил свой ответ. Не могли бы вы подтвердить это, пожалуйста?

3. Нет, вам не нужно извиняться, спасибо за поддержку, я внес изменения, и они работают нормально.

4. @Miguel Спасибо за ответ. Я рад, что ваша проблема была решена. Из вашего ответа я мог заметить, что я его пропустил. И вам спасибо.