#javascript #google-apps-script #google-sheets #google-drive-api
#javascript #google-apps-script #google-sheets #google-drive-api
Вопрос:
Итак, на данный момент у меня есть приведенная ниже функция, которая определенно работает, чтобы сделать как можно больше копий Google Sheets. Например, ниже будет сделано 3 копии Google Sheets (на самом деле я хочу сделать более 40 копий).
У меня возникли проблемы с поиском способа автоматического изменения имен файлов, чтобы это было имя каждого пользователя, а затем «- System» для каждой копии.
Это то, что у меня сейчас есть:
function copyDocs() {
for(i=0; i<3; i ){
var drive=DriveApp.getFileById('SheetsID');
drive.makeCopy();
}
}
Я бы хотел сделать что-то вроде этого:
var people = Array("Johnson Henry", "Person Last", "Tierra Smith")
function copyDocs() {
for(i=0; i<3; i ){
var drive=DriveApp.getFileById('SheetsID');
drive.makeCopy(people[i] amp; " - System");
}
}
Кто-нибудь из вас знает способ изменить мой код, чтобы сделать это? Обратите внимание, что я новичок в Apps Script, поэтому, пожалуйста, простите мне недостаток знаний здесь.
Комментарии:
1. Была ли ошибка при вашей попытке?
2. Я думал, что у него ошибка, но проблема в следующем:
below will make 3 copies of a Google Sheets (in reality, I'll want to make 40 copies).
я считаю, что он просто хочет использовать длину массива вместо печатной3
копии. @TheMaster
Ответ №1:
Вы можете сделать это более эффективным способом.
Вы можете использовать forEach() для перебора элементов people
массива, а затем использовать литералы шаблонов для присвоения файлам соответствующих имен:
function copyDocs() {
const drive=DriveApp.getFileById('SpreadsheetID');
const people = ["Johnson Henry", "Person Last", "Tierra Smith"];
people.forEach(person=>{
var copy = drive.makeCopy( `${person} - System`)
var copySpreadsheet = SpreadsheetApp.openById(copy.getId());
var copySheet = copySpreadsheet.getSheets()[0];
copySheet.getRange('B2').setValue(person);
});
}
Комментарии:
1. Спасибо, Мариос! Вы также знаете, есть ли у меня способ изменить конкретную ячейку на имя каждого человека (например, я бы хотел, чтобы ячейка B2 = имя каждого человека)? Я думал, что смогу разобраться в этом самостоятельно.
2. @vvquiuno Я отредактировал свой ответ. Но, пожалуйста, любые дополнительные вопросы следует задавать в отдельном сообщении. Пожалуйста, отправьте новый вопрос, если у вас возникнут дополнительные проблемы.
3. @vvquiuno в моем обновленном решении
getSheets()[0]
указывает, что только на первом листе будет указано имя пользователя в ячейке B2. Если вам нужен второй лист, тогда скажитеgetSheets()[1]
. Если вам нужны все из них, вам нужно снова перебрать их все с помощью цикла forEach. Но все эти изменения следует задать в другом сообщении.4. Большое вам спасибо, Мариос! Это решение работает для меня, но я обязательно опубликую в другом комментарии, если появится что-нибудь еще.