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)


