Googleドライブ内にあるテキストファイルやJSONファイルの内容を書き換えるコードの例です
以下に3つのコード.gsを書きましたが 上書きするだけなら「1. 内容を上書きするコード」で実現できます
- 内容を上書きするコード
- 元ファイルをコピーしてから上書きするコード
- 処理を分けて書くコード
例
abcと書かれたテキストファイル(元ファイル)があって
ファイルの中身をxyzに上書きする
上書きすると元のデータには戻せないのでコード2.gsで「元ファイルをコピーしてから上書きするコード」も書きました
コード3.gsはコード2.gsの処理をやること毎の関数に分けてupdate_file(){}の中で目次のように実行する形にしました
その1. 内容を上書きするコード
コード1.gs
var FILE_ID = "ID"; function update_file(){ var file = DriveApp.getFileById(FILE_ID); var content = "xyz"; file.setContent(content); } |
意訳ファイルIDを指定する この機能がやること ドライブ内で対象のファイルを取得して 書き込む内容を決めて ファイルに書き込む |
その2. 元ファイルをコピーしてから上書きするコード
コード2.gs
var FILE_ID = "ID"; function update_file(){ var file = DriveApp.getFileById(FILE_ID); var copy_file = make_copy(file); var content = "xyz"; file.setContent(content); Logger.log(copy_file.getUrl()) } function make_copy(file) { var file_name = file.getName(); var copy_file_name = "Copy of " + file_name; var folder_id = file.getParents().next().getId(); var folder = DriveApp.getFolderById(folder_id); var copy_file = file.makeCopy(copy_file_name, folder); return copy_file; } |
意訳ファイルIDを指定する この機能がやること ドライブ内で対象のファイルを取得して コピーを作成して 書き込む内容を決めて ファイルに書き込む コピーファイルのURLをログに出す この機能がやること 渡されたファイルからフォルダIDを取得して コピー先のフォルダにして 渡されたファイルのファイル名を取得して コピーファイルのファイル名を決めて ファイルをコピーして 返す |
その2−2.コピーファイルを別フォルダに保存してファイル名に日時を入れる
コード2-2.gs
var COPY_FOLDER_ID = "ID"; var FILE_ID = "ID"; function update_file(){ var file = DriveApp.getFileById(FILE_ID); var copy_file = make_copy(file); var content = "xyz"; file.setContent(content); Logger.log(copy_file.getUrl()) } function make_copy(file) { var file_name = file.getName(); var date = format_date(); var copy_file_name = date + " Copy of " + file_name; var folder_id = COPY_FOLDER_ID; var folder = DriveApp.getFolderById(folder_id); Logger.log(folder.getEditors()) var copy_file = file.makeCopy(copy_file_name, folder); return copy_file; } function format_date(){ var date = new Date(); var formated = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy/MM/dd/HH:mm:ss'); Logger.log(formated); return formated; } |
その3. 処理を分けて書くコード
コード3.gsvar FILE_ID = "ID"; function update_file(){ var file = get_file(); var copy_file = make_copy(file); var content = new_content(); set_content(file, content); Logger.log(copy_file.getUrl()) } function get_file(){ var file = DriveApp.getFileById(FILE_ID); return file; } function make_copy(file) { var folder_id = file.getParents().next().getId(); var folder = DriveApp.getFolderById(folder_id); var file_name = file.getName(); var copy_file_name = "Copy of " + file_name; var copy_file = file.makeCopy(copy_file_name, folder); return copy_file; } function new_content(){ var content = "xyz"; return content; } function set_content(file, content){ file.setContent(content); } | 意訳ファイルIDを指定する この機能がやること ドライブ内で対象のファイルを取得して コピーを作成して 書き込む内容を取得して ファイルに書き込む コピーファイルのURLをログに出す この機能がやること 対象のファイルを取得して 返す この機能がやること 渡されたファイルからフォルダIDを取得して コピー先のフォルダにして 渡されたファイルのファイル名を取得して コピーファイルのファイル名を決めて ファイルをコピーして 返す この機能がやること 書き込む内容を決めて 返す この機能がやること 渡されたファイルに渡された内容を書き込む |
参考
setContent(content)
https://developers.google.com/apps-script/reference/drive/file#setContent(String)
setContent(content)
https://developers.google.com/apps-script/reference/drive/file#setContent(String)