【GAS】スプシをGoogleDriveに保存して更新処理

その他

0

納品書など、複数ファイル(ワークブック単位)で管理したい場合があると思います。

やり方としてはimportrangeを使うのが一般的です。

ただ数が多い場合にはかなりの作業時間を必要とします。

なので通常シート名で検索して指定する部分をフォルダID、ファイルID、シートIDをうまく分けて処理します。

function create(fileName) {
  // GoogleDrive上の任意のフォルダのIDを取ってくる(下記のhogehogeの部分)
  // https://drive.google.com/drive/u/0/folders/hogehoge
  const FOLDER_ID = 'hogehoge';
  // マイドライブにファイル名を指定してシートを作る
  var id = SpreadsheetApp.create(fileName).getId();
  // ファイルを移動するためにIDからファイル情報を取得
  var file = DriveApp.getFileById(id);
  // 移動先のフォルダを指定
  var folder = DriveApp.getFolderById(FOLDER_ID);
  // 既に該当ファイル名があればそれを使う
  var fileItr = folder.getFilesByName(fileName);
  if (fileItr.hasNext()) {
    var fileId = fileItr.next().getId()
    return SpreadsheetApp.openById(fileId)
  }
  // なければ新規作成してファイルを移動(コピーして削除)
  folder.addFile(file);
  DriveApp.getRootFolder().removeFile(file);
  return SpreadsheetApp.openById(id)
}

このあとはお好きなようにシートに更新処理をかけるだけです!

const fileName = "テストファイル"
const values = [["aaa", "AAA"],["bbb", "BBB"]];
sheet = create(fileName).getSheetByName("シート1");
sheet.getRange(1, 1, values.length, values[0].length).setValues(values);

0

Posted by riku