22

誰か助けてくれませんか

特定のフォルダーに App Script を使用してスプレッドシートを作成したいと考えています。どうやってするか。

現在、私は次のようにやっています:

var folder = DocsList.getFolder("MyFolder");
var sheet = SpreadsheetApp.create("MySheet");
var file = DocsList.getFileById(sheet.getId());
file.addToFolder(folder);
file.removeFromFolder(file.getParents()[0]);

機能していません.......

4

9 に答える 9

42

@Joshua が提案したように、Advanced Drive Service を使用して (特定のフォルダーに) スプレッドシートを作成することができます。

var name = 'your-spreadsheet-name'
var folderId = 'your-folder-id'
var resource = {
  title: name,
  mimeType: MimeType.GOOGLE_SHEETS,
  parents: [{ id: folderId }]
}
var fileJson = Drive.Files.insert(resource)
var fileId = fileJson.id

この方法でファイルを移動する必要はありません!

于 2017-01-06T16:26:21.750 に答える
11

DriveAppを使用してGoogle Docs (Docs または SpreadSheets) を作成することも、 DocListが廃止されたためaddToFolderを使用することもできなくなったためです。Google ドキュメントまたは Google スプレッドシートを作成または「移動」する方法は 1 つしかありません。

  //"Move" file to folder-------------------------------//
  var fileID = '12123123213321'
  var folderID = '21321312312'
  var file = DriveApp.getFileById(fileID).getName()
  var folder = DriveApp.getFolderById(folderID)
  var newFile = file.makeCopy(file, folder)

  //Remove file from root folder--------------------------------//
  DriveApp.getFileById(fileID).setTrashed(true)

ご覧のとおり、これはファイルを移動しません。目的のフォルダーに同じ名前のコピーを作成し、元のファイルをゴミ箱に移動します。これを行う他の方法はないと確信しています。

于 2015-03-25T14:06:42.587 に答える
10

もう1つの答えは少し短いです(そしてあまり明確ではありません)。あなたのアプローチは論理的であり、置き換えればうまくいくはずです

file.removeFromFolder(file.getParents()[0]); 

file.removeFromFolder(DocsList.getRootFolder());

新しいDrive アプリFolderクラスを使用して同じ作業を行うより良い方法があります。Folder にはファイルを作成するメソッドがあり、 mimeType enumを使用してファイルの種類を指定できます。

コードは次のようになります。

function myFunction() {
  var folders = DriveApp.getFoldersByName('YOUR FOLDER NAME'); // replace by the right folder name, assuming there is only one folder with this name
  while (folders.hasNext()) {
   var folder = folders.next();
  }
  folder.createFile('new Spreadsheet', '', MimeType.GOOGLE_SHEETS); // this creates the spreadsheet directly in the chosen folder
}
于 2013-10-26T19:02:24.417 に答える
2

私はついに私の質問に対する答えを得ました。以下の作品

var file = DocsList.getFileById(sheet.getId());
var folder = DocsList.getFolder("MyFolder");
file.addToFolder(folder);

// remove document from the root folder
folder = DocsList.getRootFolder();
file.removeFromFolder(folder);
于 2013-10-26T18:54:33.103 に答える