Каков наилучший способ направить данные из нескольких электронных таблиц Google в один мастер-лист? - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть исходная таблица данных ответов формы, которая разделяется на отдельные таблицы в зависимости от различных рабочих процессов моего бизнеса.Теперь мне нужно перенести все эти данные с отдельных листов Google на один мастер-лист.Данные будут продолжать добавляться к отдельным листам, и их необходимо будет обновлять в рекомбинированном мастере, поскольку данные добавляются в несколько документов.

function importVariations() { // This function knows about the documents and requests that data.
var documents = [
'1f_2KYg8l_Pnrruc6o2OnmSvz6JUml5eMboRTdSO1PZM', 
'1Vbg7iUgtJtO15W0Bc9x22ImCepfs7F3B3GfnQSbZ1EM',
'1eIK2tiiB28b-wP8so_zbcdNKrF-v0OuXwG4BG1hlI98',
'1jJ6sfzfoCtvFo-zHiQR7vvhukBQC8aiO1ZJEHz5sKwI',
'1EiP0wYAAYpG1VBDq2aaeuwifB2__ZkmwOP7cKdkqWBg',
'17kv6rZtLbMo3dS7vuJNONkH0LWBrfwr_qBi1skeo4WY',
'1bQHXHcSTri_AgBLR932KU6Y0NNr_PIAYJY-KFMKRmFk',
'1jGJqmp-4SbgpMokxv6pyDkbkVSJnlhGYiM82PUQB3mo',
'14oAR3GPW8RKGzmXKhuwBW6CrHBq8xYu_KACP1zRFjlU',
  ];

var sheetsToPostTo = ['1dXyxH5XrqRn9mLXEAOglmg-hFSER0LJa2Df6C5YRtJg'];
var allData = getAllData(documents); // get all the data and store in variable

for (var i = 0; i < sheetsToPostTo.length(); i += 1) { // loop through all master sheets and post allData
    postAllData(allData, sheetsToPostTo[i]);
    }

}

function getAllData(documents) { // concatenate all data and return
var allData = [];

for (var i = 0; i < documents.length; i += 1) { // loop through all documents
    allData = allData.concat(getRawData(documents[i])) // get raw data for each document loop through
    }

return allData; // return all data
}

function getRawData(sheetID) { // get raw data for a sheet, remove headers and return just data
var data = SpreadsheetApp.openbyid(sheetID).getsheetbyname('Responses').getDataRange().getValues();

data.shift();
data.shift();

return data;
}

function postAllData(data, sheetId) { // posts data passed to the sheet id passed
SpreadsheetApp
    .openbyid(sheetId)
    .getsheetbyname('1dXyxH5XrqRn9mLXEAOglmg-hFSER0LJa2Df6C5YRtJg')
    .getRange(3, 1, data.length(), data[i].length())
    .setValues(data); // post all of the data to the sheet
}

Получение ошибки:

TypeError: Не удается найти функцию openbyid в объекте SpreadsheetApp.(строка 34, файл "getdata")

Кроме того, var sheetsToPostTo не выделяется как переменная, почему это так?

1 Ответ

0 голосов
/ 07 февраля 2019

Дело имеет значение.Это openById() та же проблема с getSheetByName.Обычно, если переменная не выделяется как переменная в редакторе сценариев, это означает, что где-то в коде есть ошибка.

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