LANG SELRCT

Apps Script Reference  (Create: Create new Spreadsheet | Create new Apps Script

Tuesday, February 13, 2018

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


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


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



Latest post

スプレッドシートA列にある複数のテキストをスライドに追加したい(Google Apps Script)

今回Google Apps Scriptでやりたいこと GoogleスプレッドシートA列にある複数の値を取得して Googleスライドに渡して 図形オブジェクトのテキストとして追加したい ① スプレッドシートのA列に値を入れておく ② Code.gsのinsertNewShape...