GASでスプレッドシートを作成する際、フォルダを指定できない(※2023/02/10 時点)
GASでスプレッドシートを作成するメソッド
SpreadsheetApp.create("テストファイル名");
上記の処理ではマイドライブにスプレッドシートが生成されるだけで、フォルダの指定はできません。
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#createname
任意のフォルダに作成したい場合は
①マイドライブにスプレッドシートを生成
②指定のフォルダに移動
という手順が必要になります。
そこで、1行で任意のフォルダにスプレッドシートが作成できるよう関数を作成しました。
(フォルダを指定するだけでなく、 初期シート名も変更できるようにしています。)
関数は以下になります。
任意のフォルダにスプレッドシートを作成する関数
function createSpreadsheet(fileName, {sheetName=null, folderId=null}) {
// 新規スプレッドシートをマイドライブに生成
const ss = SpreadsheetApp.create(fileName);
// シート名指定がある場合、シート名を書き換える
if (sheetName) {
ss.getSheets()[0].setName(sheetName);
}
// フォルダ指定がある場合、フォルダ移動
if (folderId){
// スプレッドシートをファイルオブジェクトとして開く
const file = DriveApp.getFileById(ss.getId());
// フォルダオブジェクト取得
const folder =DriveApp.getFolderById(folderId);
// フォルダ移動
file.moveTo(folder);
}
return ss;
}
解説
引数を以下のようにしています
- fileName(必須): スプレッドシート名
- sheetName(任意): シート名
- folderId(任意): フォルダID
※フォルダIDはGoogleDriveのフォルダのURL
https://drive.google.com/drive/u/0/folders/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
の"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"の部分
sheetName, folderId を任意指定しているため
シート名の指定が
有り:指定のシート名で書き換え
なし:初期(シート1)のまま
フォルダID指定が
有り:指定のフォルダにスプレッドシートを移動
なし:マイドライブのまま
という動作になります。
使い方
// 指定のフォルダに作成、シート名変更
const ss = createSpreadsheet("ファイル名", {sheetName: "シート変更", folderId: "XXXXXXXXXXXXXXXX"});
// 指定のフォルダに作成、シート名変更せず
const ss = createSpreadsheet("ファイル名", {folderId: "XXXXXXXXXXXXXXXX"});
// マイドライブに作成、シート名変更
const ss = createSpreadsheet("ファイル名", {sheetName: "シート変更"});
// マイドライブに作成、シート名変更せず SpreadsheetApp.create("ファイル名")で作るべきだとは思うけど
const ss = createSpreadsheet("ファイル名", {});
参考