Мне нужна помощь в исправлении скрипта.В настоящее время у меня есть скрипт, который позволяет мне копировать лист из мастер-формы.
Проблема:
Если у меня есть форма, связанная с листом, сценарий НЕ копирует форму.Я хочу скопировать форму и ссылку на каждую копию листа.
Я нашел замечательный скрипт приложения (спасибо youtuber Карл Эрроу Смит), который позволяет мне копировать лист из мастер-формы!Это код:
function copyfilefromsource() {
var ui = SpreadsheetApp.getUi();
var sheet_merge = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("List");
var last_row = sheet_merge.getLastRow();
var newsheet_firstname = null;
var newsheet_surname = null;
var newsheet_email = null;
var source_folder = null;
var file_owner = null;
var dest_folder = null;
var sheets_created = 0;
var new_file = null;
var source_file = null;
var student_id = null;
var google_domain = null;
var range = sheet_merge.getRange(1, 1, last_row, 4);
var temp = null;
source_file = DriveApp.getFileById(range.getCell(1, 2).getValue()); //gets the source file to copy
dest_folder = DriveApp.getFolderById(range.getCell(2, 2).getValue()); //gets the ID of the folder to place the copied files into
file_owner = range.getCell(3, 2).getValue(); //person to own the files
google_domain = range.getCell(4, 2).getValue(); //extension of the email address
if (last_row <= 6) {
SpreadsheetApp.getUi().alert("No rows to process!");
return
}
for (var i = 7; i <= last_row; i++) { // loop to go down evenery row from 7 until the end
if (range.getCell(i, 4).getValue() == '') { //makes sure there is nothing in the column, i.e. can run the script with some students already been processed if it fails half way through.
student_id = range.getCell(i, 1).getValue(); //take the first column for the
newsheet_email = student_id + google_domain; //combines with username with the domain;
// should add some user checking code here!!!!! and only run the below if user exists (future improvement)
newsheet_firstname = range.getCell(i, 2).getValue(); //gets first name from the sheet
newsheet_surname = range.getCell(i, 3).getValue(); //gets surname from the sheet
new_file = source_file.makeCopy(source_file.getName() + " - " + newsheet_firstname + " " + newsheet_surname + " - " + student_id, dest_folder);
new_file.setOwner(file_owner); //allocates an owner to the sheet
new_file.addViewer(newsheet_email); //allocates a viewer to the sheet
//new_file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW); //adds anyone with the link as a viewer
//source_folder.removeFile(new_file); // hides from root folder not required as going directly to correrrect folder
// new_file.setActiveSheet('My Grades');
//new_file.getRange(2,3).setValue(student_id);
//change the a cell in the copied spreadsheet to the student ID
//var ss = SpreadsheetApp.openById(new_file.getId());
//var sheet = ss.getSheets()[0]; // "access data on different tabs"
//var sheet = ss.getSheetByName('My Grades');
// ss.setActiveSheet(sheet);
// ss.getRange('C2').setValue(student_id);
//Add the details that the process has worked
SpreadsheetApp.getActiveSheet().getRange(i, 1).setFormula('=HYPERLINK("' + new_file.getUrl() + '/","' + student_id + '")');
SpreadsheetApp.getActiveSheet().getRange(i, 4).setValue(new_file.getId());
sheets_created++; // add to spreadsheets created
}
}
ui.alert(sheets_created + " files were created!")
}
Однако у меня есть форма, связанная с листом, и этот скрипт не скопировал форму.
Я хочу скопировать форму и ссылку накаждая копия листа.
Сценарий приложения по существу ссылается на лист.Исходный файл и папка добавляются на лист.Каждый раз, когда вы вводите имя человека и первую часть электронного письма в лист (копия ниже), он создает копию листа.У меня вопрос, как мне добавить в скрипт, чтобы получить форму ссылки для копирования.
Ссылка на мою электронную таблицу
Я нашел второй скрипт в StackOverflow, который, похоже, решает аналогичную проблему ( Копирование таблицы Google больше не копирует ссылкиФорма ), и я попытался добавить к ней сценарий, но на самом деле спустя 48 часов я только что сделал беспорядок и не продвинулся вообще.
1-й пост здесь, так что будьте спокойны, если я не дал достаточно информации.спасибо
Конечный результат должен быть в форме и ссылка для копирования с листа