LANG SELRCT

Google Apps Scriptのコードを書く場所  (新規作成: スプレッドシート | スクリプトエディタ

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


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


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



最新の投稿

Pixel 5でSuicaが使えないときはGoogle PayでSuicaを有効にしてみる

Pixel 5への機種変でSuicaが使えない人向けに書きました。 MISSION Pixel 5でSuicaを使えるようにする SOLUTION 旧端末で機種変更の設定を行う NFCをオンにする Google PayでSuicaを有効にする PROBLEMS 以前...