Googleスプレッドシートで、Google Apps Scriptを使って、生成した文字列をシートに出力していたが、
文字数が増えて、1セルに5000文字以上だとエラーになってしまうので、ファイル出力するようにした。
やりたいことは、スプレッドシートが存在する同じフォルダに、ファイル出力することである。
REFERENCEを見ながら作成したので、
これが最適かどうかは不明だが、一応動作している。
もっとよいやり方があれば、教えてください。
// --------------------------------------------
// スプレッドシートと同じフォルダに、ファイル出力する。
// --------------------------------------------
// 現在日時を文字列にする。(おまけ。直接関係ない。)
var nowStr = Utilities.formatDate(new Date(), "JST", "yyyyMMddHHmmss");
// ユーザーのルートフォルダにファイルが作られる。(ファイルの中身は、文字列で渡す。)
var newFile = DriveApp.createFile("ABC_" + nowStr + ".txt", "contents");
// ユーザーのルートフォルダを保持しておく。(後で使う)
var originalFolders = newFile.getParents();
// スプレッドシートのファイルIDを取得する。(スプレッドシートのフォルダを取得するため。)
var spreadsheetFileId = SpreadsheetApp.getActiveSpreadsheet().getId();
// スプレッドシートのファイルを取得する。
var spreadsheetFile = DriveApp.getFileById(spreadsheetFileId);
// スプレッドシートの親フォルダのリストを取得する。(スプレッドシートが1つの親フォルダにしかない場合は、1つである。)
var folders = spreadsheetFile.getParents();
// スプレッドシートの親フォルダすべてに、ファイルが見えるようにする。(スプレッドシートが1つの親フォルダにしかない場合は、1つである。)
while (folders.hasNext()) {
var folder = folders.next();
folder.addFile(newFile); // ファイル実体は生成されない。フォルダに見えるようになるだけ。
}
// ユーザーのルートフォルダからファイルが見えないようにする。
while (originalFolders.hasNext()) {
var folder = originalFolders.next();
folder.removeFile(newFile); // ファイル実体は削除されない。フォルダから見えなくなるだけ。
}