これが私がやろうとしていることです: Google ドキュメントの URL を指定して、ドキュメント ID を取得して 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 からファイル ID を抽出する安全なソリューションは、私にも適しています。
ありがとう