LANG SELRCT

コードを書く場所についてはこちら

2018年2月13日火曜日

Googleドライブ内のテキストファイルを更新する


Googleドライブ内にあるテキストファイルやJSONファイルの内容を書き換えるコードの例です

以下に3つのコード.gsを書きましたが 上書きするだけなら「1. 内容を上書きするコード」で実現できます
  1. 内容を上書きするコード
  2. 元ファイルをコピーしてから上書きするコード
  3. 処理を分けて書くコード


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.gs
var 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を取得して
コピー先のフォルダにして
渡されたファイルのファイル名を取得して
コピーファイルのファイル名を決めて
ファイルをコピーして
返す


この機能がやること
書き込む内容を決めて
返す


この機能がやること
渡されたファイルに渡された内容を書き込む