0

Googleドキュメントのスクリプトを実行して、新しいクライアントに必要なフォルダ構造を作成しようとしています(コンテンツ/画像をにアップロードするため)。これが私がこれまでに持っているものです:

/**
 * This script creates the necessary folder structure for a new client
 */
function newClientSetup() {

  var initial = DocsList.getFolder("Clients");
  var client = DocsList.addtoFolder.createFolder("Client Name");
  var file = DocsList.addtoFolder(client);

};

現在、これは機能していません(TypeError: Cannot call method "createFolder" of undefined. (line 7))が、Folder内のクラスの使用方法を理解するのに問題がありますDocList。私はそれが次のように使用できる方法をDocsList持っているのを見ました:createFolder

var folder = DocsList.createFolder("Folder Name");

しかし、私はClients(すでにGoogle Docsにある)という親フォルダーから始めて、次の構造を作成しようとしています。

Clients
    Client Name
        Content
        Images

理想的には、このスクリプトを実行できますが、Client Name実際にクライアント名を作成するための変数を渡しますが、ドキュメントから多くの助けを見つけることができませんでした。助言がありますか?ありがとう!

4

3 に答える 3

3

これがどのように機能するかの例です。コメントを参照してください:

function createSubFolder(subfolder) { // the argument is the name of the folder you want to create
    var parentfolder = DocsList.getFolder('Clients'); //begin in the client folder (you could also open by Id, I prefer the ID as I find it more failsafe (ID are unique, names aren't necessarily 
    var newFolder = DocsList.createFolder(subfolder); // create the new subfolder from the argument of the function
    newFolder.addToFolder(parentfolder);// add the newly created folder to 'Clients'
}   

この関数をテストするには、次のようなものを使用します。

function test(){
    createSubFolder('test');// this will create a new folder called test in your Clients folder
}

注:フォルダのIDを取得するには、フォルダのURLのfolders/のすぐ後ろの値を取得します。太字の例https ://drive.google.com/?hl = fr&tab = wo#folders / 0B3qSFxxxxxxxxxdsMTFZMDQ

より多くのフォルダレベルがある場合、シーケンスははるかに長くなる可能性があります...しかし、構造は常に同じであり、すべてのフォルダに固有です。

于 2012-07-19T00:33:07.903 に答える
2

これが私が書いた関数といくつかのコードで、あなたを助けるかもしれません。サブ関数を使用して、フォルダーが既に存在するかどうか、および存在しないかどうかを確認します。フォルダがすでに存在する場合は、チェーンに役立つオブジェクトを返します(使用方法についてはここで参照)。

function newClientSetup() {
   var ROOT_FOLDER = "Clients";
   var CLIENTNAME_FOLDER = "Client Names";

   // get a the system route folder (if it deosn't existing make it 
   var rootFolder = folderMakeReturn(ROOT_FOLDER); 
   // create/get draft and release folders 
   var clientNamesFolder = folderMakeReturn(CLIENTNAME_FOLDER,rootFolder, ROOT_FOLDER+"/"+CLIENTNAME_FOLDER);   
}

// function to see if folder exists in DocList and returns it 
// (optional - if it doesn't exist then makes it) 
function folderMakeReturn(folderName,optFolder,optFolderPath){ 
   try { 
      if (optFolderPath != undefined){ 
         var folder = DocsList.getFolder(optFolderPath); 
      } else { 
         var folder = DocsList.getFolder(folderName); 
      } 
      return folder; 
   } catch(e) { 
      if (optFolder == undefined) { 
         var folder = DocsList.createFolder(folderName); 
      } else { 
         var folder = optFolder.createFolder(folderName); 
      } 
      return folder; 
   } 
}
于 2012-07-19T09:46:06.590 に答える
0

質問/回答が3年前であり、以前は正しかったことは知っていますが、このソリューションは2015年のようにGoogle Appsスクリプトで正しく機能しなくなりました。特定のフォルダーにサブフォルダーを作成する現在の最も簡単な方法は、

function createSubFolder(parentId, folderName)
{
  var id="";
  try
  {
    var parent=DriveApp.getFolderById(parentId);   // get parent folder
    var folder =parent.createFolder(folderName);   // create sub folder 
    id=folder.getId();                             // get the subfolder id to return
  }
  catch(e)
  {
  }
  return id;
}

作成するサブフォルダー名を持つ親フォルダーIDを渡します。Folderクラスには、作成されたサブフォルダーのオブジェクトを返すフォルダーを作成するためのメソッドcreateFolderがあります。

于 2015-05-01T08:49:07.457 に答える