Вот что я пытаюсь сделать: с учетом URL-адреса Google, я хочу получить идентификатор документа для создания копии на Google Диске. Я знаю, что могу добиться этого с помощью некоторого регулярного выражения или заменить URL-адрес, но поскольку есть несколько разных форм для представления одного и того же документа в URL-адресе, я хотел найти общее решение.
В настоящее время это лучшее, что я мог подумать:
function getFileIdFromUrl(url) {
try {
return getDocIdFromUrl(url);
} catch (e) {
return getSpreadsheetIdFromUrl(url);
}
}
function getDocIdFromUrl(url) {
var doc = null;
try {
doc = DocumentApp.openByUrl(url);
} catch (e) {
doc = DocumentApp.openByUrl(url + "/edit");
}
return doc.getId();
}
function getSpreadsheetIdFromUrl(url) {
var spreadsheet = null;
try {
spreadsheet = SpreadsheetApp.openByUrl(url);
} catch (e) {
spreadsheet = SpreadsheetApp.openByUrl(url + "/edit");
}
return spreadsheet.getId();
}
function copy(url) { // may throw an exception if the URL is invalid or private
var id = getFileIdFromUrl(url);
var file = DriveApp.getFileById(id);
file.makeCopy().setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
}
Проблема в том, что мое решение охватывает только документы и электронные таблицы, я хотел бы сделать то же самое с любым загруженным файлом, например:
https://docs.google.com/file/d/0B-FYu_D7D7x4REdtRVEzVH0eU0/edit
Короче говоря, я хотел что-то вроде этого:
DriveApp.getFileByUrl(url).makeCopy();
Кто-нибудь знает, возможно ли это?
Любое безопасное решение для извлечения идентификатора файла из URL-адреса файла также подходит для меня.
Спасибо