LoginSignup
0
1

More than 1 year has passed since last update.

【GAS】任意のフォルダにスプレッドシートを作成する

Posted at

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("ファイル名", {});

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1