@WebAnalytics1

Где ошибка в коде Google Script для экспорта в txt?

Здравствуйте,
Есть таблица
5a7af60826cde585990088.png
Задача: экспортировать через (начиная с 1) столбец (начиная с 3 строки) в файл txt(название брать с первой строки). Для этого я написал скрипт
function export() {
  var Folder = DriveApp.getFolderById("ID");
  var SpreadSheets = SpreadsheetApp.openById('ID').getSheetByName('Минуса');
  
  var values = SpreadSheets.getRange("A3:A").getValues();
  var txtName = SpreadSheets.getRange("A1").getValues();
  var text = values.map(function (a) {return a.join('\t');}).join('\r\n');
  var Files = Folder.getFiles();
  while(Files.hasNext()){
  var File = Files.next();
    if(File.getName() === txtName + ".txt"){
      Folder.removeFile(File);
    }
    }
  Folder.createFile(txtName + '.txt', text);

Проблема возникает если столбцов становится очень много(скрипт становится очень длинным) и я попытался написать в виде цикла
function export() {
  var Folder = DriveApp.getFolderById("ID");
  var Files = Folder.getFiles();
  var SpreadSheets = SpreadsheetApp.openById('ID').getSheetByName('Минуса');
  var lastRow = SpreadSheets.getLastRow();
  var c =1;
  for(var i = 3; i<=lastRow;i++){
    for(;c<=15;c+2){
    var values = SpreadSheets.getRange(i, c).getValue();
    var text = values.map(function (a) {return a.join('\t');}).join('\r\n');}
      for(;c>15;c+2){var txtName = SpreadSheets.getRange(1, c).getValues();}
     while(Files.hasNext()){
  var File = Files.next();
    if(File.getName() === txtName + ".txt"){
      Folder.removeFile(File);}
     }
    Folder.createFile(txtName + '.txt', text);
    }
}

Пишет
TypeError: Не удается обнаружить функцию map в объекте авамис

Помогите, пожалуйста, правильно написать этот скрипт.
  • Вопрос задан
  • 246 просмотров
Решения вопроса 1
@WebAnalytics1 Автор вопроса
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Замените
var values = SpreadSheets.getRange(i, c).getValue();

на
var values = SpreadSheets.getRange(i, c).getValues();


Но я бы так не делал. Диск - сложная экосистема датчиков и инициирующих событий. Возможно, вы могли бы несколько углубиться в изучение и постичь дзен событийной модели, авось, что-то будет работать более плавно и без сбоев, и реально онлайн.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы