SpreadsheetをGASで作成して指定のフォルダに移動する方法【GoogleAppsScript】

広告
雑記

下記のような作業を想定。

  1. 空のSpreadsheetを指定のフォルダにGASで作成

誤サンプルコード①

function myFunction( ) {
var folder = DriveApp.getFolderById(‘***’);
var spreadsheet = folder.createFile(‘テスト’, ‘ ‘, MimeType.GOOGLE_SHEETS);
}

結果

Exception: 無効な引数: file.contentType(行 3、ファイル「コード」)

いろいろ調べると、FolderクラスのcreateFileではSpreadsheetを作成できないらしい。

誤サンプルコード②

function myFunction( ) {
var folder = DriveApp.getFolderById(‘***’);
var spreadsheet = SpreadsheetApp.create(‘テスト’); //SpreadsheetAppからspreadsheetを作成
folder.addFile(spreadsheet); // folderにspreadsheetを追加
DriveApp.removeFile(spreadsheet); //rootfolderからspreadsheetを削除
}

結果

Exception: パラメータ(SpreadsheetApp.Spreadsheet)が DriveApp.Folder.addFile のメソッドのシグネチャと一致しません。(行 4、ファイル「コード」)

DriveAppクラスでSpreadsheetを取得してからaddFileをする必要がある様子。

正サンプルコード

function myFunction( ) {
var folder = DriveApp.getFolderById(‘***’);
var spreadsheet = SpreadsheetApp.create(‘テスト’);

var spreadsheetId = spreadsheet.getId(); //spreadsheetのIDを取得
spreadsheet = DriveApp.getFileById(spreadsheetId); //DriveAppからspreadsheetを取得し直し

folder.addFile(spreadsheet);
DriveApp.removeFile(spreadsheet);
}

補足

上記のコードでもSpreadsheetが作成されたが、以下の4つのメソッドはDeprecated(非推奨)となっている。(20201018現在)

  • ・addFile(file)
  • ・addFolder(folder)
  • ・removeFile(file)
  • ・removeFolder(folder)

代わりに、以下のメソッドを使用することになる。

  • ・moveTo(destination)

destinationにfile、folderを移動できる。

補足サンプルコード

function myFunction( ) {
var folder = DriveApp.getFolderById(‘1Kaqh7lkpvboSX-s3hDYnK5wAl-R_uVI3’);
var spreadsheet = SpreadsheetApp.create(‘テスト’);

var spreadsheetId = spreadsheet.getId();
spreadsheet = DriveApp.getFileById(spreadsheetId);

spreadsheet.moveTo(folder); //addFile, removeFileの代わりにmoveToを使用
}

コメント

タイトルとURLをコピーしました