Как найти и выбрать таблицу из документа в Apps Script? - PullRequest
1 голос
/ 10 июня 2019

Я создаю функцию в Google Apps Script.Назначение этой функции - выбрать таблицу из документа и переместить значения в созданную электронную таблицу.Проблема в том, что я не могу получить таблицу из документа (отладка в порядке, но журналы показывают выбранную таблицу как пустую {}).

    function addAnswersTable() {
    var File = function(Path) { // File object constructor
        this.Path = Path;
        this.Doc = DocumentApp.openById(this.Path);
        this.getTable = new function()
        // This function defines 
        // a getTable method to get 
        // the first table in the Document
        {
            if (this.Doc != undefined) {
                var range = this.Doc.getBody();
                var tables = range.getTables();
                var table = tables[0];
                return table;
            }
        }
    }
    // Creating Excel Table, where first column
    // of selected table should be moved
    var Table = SpreadsheetApp.create("AnswersTable");
    // Creating new File object
    var TrueAnswersFile = new File
    ('1_ne9iBaK-Z36yUYrISr3gru3zw3Qdsneiu14sWnjn34');
    // Calling getTable method to get the table placed in File 
    var TrueAnswersTable = TrueAnswersFile.getTable;
    for (var i = 1; i <= TrueAnswersTable.getNumRows; i++) {
        // Filling spreadsheet "A" column with cells'
        // values ​​from table stored in File
        Table.getActiveSheet().getRange("A" + i).setValue(TrueAnswersTable.getCell(1, i).getValue());
    };
    }

I, за исключением вывода в столбце электронной таблицы "A"как:

А1.Просто
А2.Клетки
А3.Элемент списка с
A4.Значения из таблицы

На самом деле электронная таблица пуста

1 Ответ

0 голосов
/ 11 июня 2019
  • Вы хотите извлечь значения из столбца «A» Документа Google и поместить значения в столбец «A» созданной электронной таблицы.
  • Таблица индекса 0 вДокумент имеет 4 строки и 1 столбец.
    • Значения каждой строки Just, Cells', List item with, Values From Table.

Я мог бы понять, как выше.Если мое понимание верно, как насчет этой модификации?

Точки модификации:

  • В вашем сценарии метод не используется в качестве функции.По этому способ не запускается.
    • Например, TrueAnswersFile.getTable и TrueAnswersTable.getNumRows.
  • Метод не используется.
    • Например, getValue() из TrueAnswersTable.getCell(1, i).getValue().
  • new из this.getTable = new function() не требуется.
  • В вашем сценарииgetCell(1, i) из TrueAnswersTable.getCell(1, i) извлекает значения из столбца "B" строки 2.
    • Если вы хотите извлечь значения из строки 1 столбца "A", измените значение на getCell(i - 1, 0).Но в этой модификации индекс начинается с 0.Таким образом, вы можете использовать getCell(i, 0).
  • Когда в цикле for используется setValue(), стоимость процесса становится высокой.В вашем случае вы можете использовать setValues() вместо него.

Когда вышеуказанные точки отражаются в вашем скрипте, он становится следующим:

Модифицированный скрипт:

function addAnswersTable() {
  var File = function(Path) {
    this.Path = Path;
    this.Doc = DocumentApp.openById(this.Path);
    this.getTable = function() { // Modified
      if (this.Doc != undefined) {
        var range = this.Doc.getBody();
        var tables = range.getTables();
        var table = tables[0];
        return table;
      }
    }
  }
  var Table = SpreadsheetApp.create("AnswersTable");
  var TrueAnswersFile = new File('1_ne9iBaK-Z36yUYrISr3gru3zw3Qdsneiu14sWnjn34');
  var TrueAnswersTable = TrueAnswersFile.getTable();
  var values = []; // Added
  for (var i = 0; i < TrueAnswersTable.getNumRows(); i++) { // Modified
    values.push([TrueAnswersTable.getCell(i, 0).getText()]) // Modified
  };
  Table.getRange("A1:A" + values.length).setValues(values); // Added
}

Ссылки:

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