5

現在のフォルダーのパスを見つけるにはどうすればよいですか? スクリプトにパスを入力せずにフォルダー内のファイルを操作できるように、フォルダーのパスを取得できるようにしたいだけです。

4

6 に答える 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 に答える