ここに私がやろうとしていることがあります.GoogleドキュメントのURLを指定すると、ドキュメントIDを取得してGoogleドライブにコピーを作成します。私はいくつかの正規表現やURLの置き換えでそれを達成できることは分かっていますが、URLに同じ文書を表現するためのいくつかの異なる形式があるので、私は汎用的な解決策を探していました。Google Apps ScriptのURLからファイルIDを取得する最も簡単な方法
現在、それは私が考えることが最善です:
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);
}
問題は、私の解決策が唯一の文書やスプレッドシートをカバーすることで、私は例えば、任意のアップロードしたファイルと同じことをしたいと思います:
DriveApp.getFileByUrl(url).makeCopy();
:要するに
https://docs.google.com/file/d/0B-FYu_D7D7x4REdtRVEzVH0eU0/edit
は、私はそのような何かをしたかったです
誰でも知ることができますか?
ファイルURLからファイルIDを抽出するための安全な解決方法は、私にも適しています。
おかげ
私はいくつかのテストをしました。ありがとうございました。ちょうど質問:この数字(25)は実際にGoogleドキュメントIDの最小長ですか? – Renato
これはどこにも記載されていません。私は様々なファイルからURLの束をとりました。最短のURLを見て、ちょうどその場合には割引を与えました:)また、URLの別の部分が遠く離れて25の文字に近くないことを確認しました。他の部分と混同することはありません。 –
[aquadeepによって提案された正規表現](http://stackoverflow.com/a/31201136/1404066)を使用すると、望ましくないマッチングを行う可能性が低くなります。次に、(グループ)を使って正規表現のID部分だけを抽出します:url.match(/ \/d \ /(。{25、})\ /)[1]; – Kenigmatic