現在のフォルダーのパスを見つけるにはどうすればよいですか? スクリプトにパスを入力せずにフォルダー内のファイルを操作できるように、フォルダーのパスを取得できるようにしたいだけです。
質問する
14042 次
6 に答える
4
Coreyの回答とThomasの回答のおかげで、これが「フル機能」バージョンで、ロガーのフォルダツリーとすべての親IDも表示されます...楽しみのために;-)
function getScriptFolderTree() {
var thisScript = getThisScriptInDrive();
var names = []
var Ids = []
var folder = thisScript.getParents()[0];
while (folder.getName() != "Root"){
names.unshift(folder.getName());
Ids.unshift(folder.getId());
var parents = folder.getParents();
var folder = parents[0];
}
Logger.log('Root/'+names.join().replace(/,/g,'/'))
Ids.unshift(DriveApp.getRootFolder().getId())
Logger.log(Ids)
}
function getThisScriptInDrive() {
return DriveApp.getFileById("poiuytrezazertyujhgfdsdcvcxyydryfhchfh");
}
(IDは意図的に切り捨てられます)
このスクリプトはうまく機能していますが、「ランダムな文字列」を変更すると奇妙なことに機能しなくなります...ドライブ内の検索エンジンは変更を気に入らないと思いますが、深刻な説明はありません(コメントを歓迎します)が、数分で再び動作します;-)
于 2013-02-08T23:34:04.173 に答える
0
あなたはこれを行うことができます:
function myFunction() {
var thisScript = getThisScriptInDrive();
var folder = thisScript.getParents()[0];
while (folder.getName() != "Root"){
var parents = folder.getParents();
for (var i in parents){
var folder = parents[i];
Logger.log(folder.getName());
}
}
}
function getThisScriptInDrive() {
return DocsList.find("`<jj!?=(<DW+.W/m7SBF:sgu/@B(&Cs3:{ajA~ys@KmN4&]ujhpZ~z[Tv?+dk}MpK,8pY=w&dny8N'74:.9H:~uCgY=7pRt4[Tn5")[0];
}
これは、フォルダに1つのパスしかないため、親が1つしかない場合にのみ適切に機能します。
編集:CoreyGに感謝します
于 2013-02-08T15:33:36.530 に答える
0
実行中のスクリプトを含むフォルダーを取得できました。
//
// PrintScriptFolder -- print the name of the folder in which the running script resides.
//
function PrintScriptFolder()
{
var scriptId = ScriptApp.getScriptId();
console.info('scriptId = ' + scriptId);
var file = DriveApp.getFileById(scriptId);
var folders = file.getParents();
if (folders.hasNext())
{
var folder = folders.next();
var name = folder.getName();
console.info('script folder name = ' + name);
}
}
トリックは、実行中のスクリプトの ID を取得するために ScriptApp を使用することです。そこからは非常に簡単です。DriveApp を使用してファイル ID を取得し、getParents() を使用して (1 つの) 親フォルダーのリストを取得し、next() を使用してそれを取得し、getName() を使用してその名前を取得します。
于 2020-07-27T22:16:24.923 に答える