Мне нужно хранить все идентификаторы файлов из строки URL. Когда пользователь Google Forms загружает несколько файлов в ответе формы, URL-адреса Google Drive для всех этих файлов выводятся в одну ячейку на листе в формате, подобном:
https://drive.google.com/open?id=1zeUiH8oO_Y2lnvcV1ZeNr7b3eNQP8aEH,
https://drive.google.com/open?id=1qmKl9klRTPPKO52owEuU7qMgYbMCuxs3,
https://drive.google.com/open?id=1FqH5NOpWyvcQ-XZWwcBImUJ5UBy98UHC
(Это составленные ссылки на URL)
Моя цель - прочитать эту ячейку и сохранить идентификаторы в массиве, как в следующем примере: [1zeUiH8oO_Y2lnvcV1ZeNr7b3eNQP8aEH, 1qmKl9klRTPPKO52owEuU7qMgYbMCuxs3, 1FqH5NOpWyvcQ-XZWwcBImUJ5UBy98UHC]
.
Я нашел поток , который предоставил регулярное выражение для изоляции строки идентификатора в одном URL-адресе, поэтому я попытался адаптировать его для использования нескольких URL-адресов. К сожалению, я не совсем уверен, что я делаю из-за моего номинального опыта работы с JavaScript и особенно с регулярным выражением JavaScript, поэтому не судите, допустил ли я глупую ошибку в своем коде :).
Спасибо за помощь всем.
Вот мой код:
function getIdFromUrls(urls) {
var idArray = [];
var parts = urls.split(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/);
if (urls.indexOf('?id=') >= 0){
idArray = (parts[6].split("=")[1]).replace("&usp","");
return idArray;
} else {
idArray = parts[5].split("/");
//Using sort to get the id as it is the longest element.
var sortArr = idArray.sort(function(a,b){return b.length - a.length});
idArray = sortArr[0];
Logger.log(idArray);
return idArray;
}
}
Вот лог:
[19-06-24 07: 46: 20: 532 EDT] 1zeUiH8oO_Y2lnvcV1ZeNr7b3eNQP8aEH,
https://drive.google.com/open?id
Ожидаемый результат:
[19-06-24 07: 46: 20: 532 EDT] [1zeUiH8oO_Y2lnvcV1ZeNr7b3eNQP8aEH, 1 кв. М.