В настоящее время я создаю сценарий, который берет информацию из google sheet , которая заполнена формами , а затем вставляет ее в do c шаблон, который я создал. Когда я впервые создал сценарий и протестировал его с примерами вопросов, все работало так, как я хотел, поэтому я начал создавать форму и шаблон do c, к которым в конечном итоге данные будут go. Для справки я использовал этот учебник: https://youtu.be/ziLtj5-_D7c
Первая проблема, с которой я столкнулся, это то, что я хотел, чтобы do c включал данные листа, которые будут созданы формулой I добавили на лист. Новые представления формы создали новые строки на листе, к которым формула не будет автоматически применена. Я справился с этим, создав новую вкладку на листе и примерно продублировав вкладку ответа, используя = query. Я создал новые столбцы на второй вкладке листа и применил к ним необходимые формулы. Теперь, когда я отправляю новую форму, ответы go на первой вкладке, вторая вкладка заполняется, чтобы соответствовать, и я получаю дополнительную информацию, которая мне нужна, из формул, которые там находятся. Я сделал это, следуя этому руководству: https://youtu.be/rSBb84QIjwg
Что я не знаю, как сделать, так это отредактировать скрипт так, чтобы он брал информацию с обеих вкладок для вставки в do c шаблон. Например, следующий бит отлично работает, чтобы взять данные из первой вкладки и вставить их в do c:
function autofillGoogleDocFromForm(e) {
var timestamp = e.values[0];
var invoicenumber = e.values[1];
var datesubmitted = e.values[2];
var pdatebegin = e.values[3];
var pdateend = e.values[4];
var invoicesalary = e.values[5];
var invoicetravel = e.values[6];
var invoicesupplies = e.values[7];
var invoiceother = e.values[8];
var invoiceindirect = e.values[9];
Что я хочу сделать, это добавить дополнительные переменные, которые будут поступать из второй вкладки , Столбец K на первой вкладке будет [10], как мне ссылаться на столбец K на вкладке second ?
EDIT: вот полный сценарий, который сделал все, что мне нужно было сделать из первый лист, прежде чем задавать этот вопрос:
function autofillGoogleDocFromForm(e) {
var timestamp = e.values[0];
var invoicenumber = e.values[1];
var datesubmitted = e.values[2];
var pdatebegin = e.values[3];
var pdateend = e.values[4];
var invoicesalary = e.values[5];
var invoicetravel = e.values[6];
var invoicesupplies = e.values[7];
var invoiceother = e.values[8];
var invoiceindirect = e.values[9];
var templateFile = DriveApp.getFileById("1CRMLGw-dq8vsQASkFDuOVvg03DgqYInKeTscGu9jXn4");
var templateResponseFolder = DriveApp.getFolderById("1lCLWLKochBNW1uvG9hJkjZtu7EWNXhx6");
var copy = templateFile.makeCopy('012 Invoice Number: ' + invoicenumber, templateResponseFolder);
var doc = DocumentApp.openById(copy.getId());
var body = doc.getBody();
body.replaceText("{{Invoice number}}", invoicenumber);
body.replaceText("{{Date submitted}}", datesubmitted);
body.replaceText("{{Beginning date}}", pdatebegin);
body.replaceText("{{Ending date}}", pdateend);
body.replaceText("{{Invoice salary}}", invoicesalary);
body.replaceText("{{Invoice travel}}", invoicetravel);
body.replaceText("{{Invoice supplies}}", invoicesupplies);
body.replaceText("{{Invoice other}}", invoiceother);
body.replaceText("{{Invoice indirect}}", invoiceindirect);
doc.saveAndClose();
}
И вот моя пересмотренная попытка после прочтения комментариев здесь:
function autofillGoogleDocFromForm(e) {
var secondTab = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Totals");
var timestamp = e.values[0];
var invoicenumber = e.values[1];
var datesubmitted = e.values[2];
var pdatebegin = e.values[3];
var pdateend = e.values[4];
var invoicesalary = e.values[5];
var invoicetravel = e.values[6];
var invoicesupplies = e.values[7];
var invoiceother = e.values[8];
var invoiceindirect = e.values[9];
var invoiceamount = secondTab.getRange("K:K").getValues();
var salarytotal = secondTab.getRange("L:L").getValues();
var traveltotal = secondTab.getRange("M:M").getValues();
var suppliestotal = secondTab.getRange("N:N").getValues();
var othertotal = secondTab.getRange("O:O").getValues();
var indirecttotal = secondTab.getRange("P:P").getValues();
var totaltodate = secondTab.getRange("Q:Q").getValues();
var templateFile = DriveApp.getFileById("1CRMLGw-dq8vsQASkFDuOVvg03DgqYInKeTscGu9jXn4");
var templateResponseFolder = DriveApp.getFolderById("1lCLWLKochBNW1uvG9hJkjZtu7EWNXhx6");
var copy = templateFile.makeCopy('012 Invoice Number: ' + invoicenumber, templateResponseFolder);
var doc = DocumentApp.openById(copy.getId());
var body = doc.getBody();
body.replaceText("{{Invoice number}}", invoicenumber);
body.replaceText("{{Date submitted}}", datesubmitted);
body.replaceText("{{Beginning date}}", pdatebegin);
body.replaceText("{{Ending date}}", pdateend);
body.replaceText("{{Invoice salary}}", invoicesalary);
body.replaceText("{{Invoice travel}}", invoicetravel);
body.replaceText("{{Invoice supplies}}", invoicesupplies);
body.replaceText("{{Invoice other}}", invoiceother);
body.replaceText("{{Invoice indirect}}", invoiceindirect);
body.replaceText("{{Invoice amount}}", invoiceamount);
body.replaceText("{{Salary total}}", salarytotal);
body.replaceText("{{Travel total}}", traveltotal);
body.replaceText("{{Supplies total}}", suppliestotal);
body.replaceText("{{Other total}}", othertotal);
body.replaceText("{{Indirect total}}", indirecttotal);
body.replaceText("{{Total outlays to date}}", totaltodate);
doc.saveAndClose();
}
Эта вторая версия определенно извлечение данных со второго листа, и это здорово, но он берет данные из каждой ячейки столбца, и мне нужны данные только из нижней ячейки столбца, которая создается при добавлении новой строки с каждой новой формой представление.