【GAS、Google Spreadsheet】Googleドキュメントで日記を付けるために毎日Docファイルを作ってくれるスクリプトです

Code

はじまり

135ml
135ml

ほぉ~、毎日大根が良い感じに干涸らびていっていますな~。

リサちゃん
リサちゃん

そうなんだよね~、この干涸らび具合を日記とかにして残しておきたいよね~。

135ml
135ml

では、今回のツールで毎日の大根の成長をGoogleドキュメントに記してはどうかね?

リサちゃん
リサちゃん

ほぉ~、使ってみっか~。 ボリボリ

ツールの概要

毎日定期的にこのツールを作動させると、このフォルダのように「yyyyMMdd(曜日)」といった感じのファイル名のファイルを作成します。

「yyyyMMdd(E)」のファイルを元に作成しています。

ツールのソース

以下が実際に使用しているソースになります。

コード.gs

function setTrigger(){
  // var funcName = 'setTrigger';
  // deleteTrigger(funcName);
  // createTrigger(funcName);
  duplicateDocument();
}

function duplicateDocument() {
  // テンプレートファイル(「yyyyMMdd(E)」)
  var templateFile = DriveApp.getFileById('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
  // 出力フォルダ(「010_Diary」)
  var OutputFolder = DriveApp.getFolderById('YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY');
  // 出力ファイル名
  var OutputFileName = Utilities.formatDate(new Date(), 'JST', 'yyyyMMdd(E)');
  
  templateFile.makeCopy(OutputFileName, OutputFolder);
}

苦労した点

というか、出来なかった点です・・・。

ファイルをコピーするためのトリガーを以下のコードで書いたのですが、上手く定期的に動かず・・・。一度は動くんですが、2回目以降はなぜか動かない・・・。結局わからなかった・・・。

function createTrigger(funcName){
  const date = new Date();
  date.setDate(date.getDate() + 1);
  date.setHours(16); // 日本の時間より14時間早く設定する。6時に作る。
  date.setMinutes(1);
  ScriptApp.newTrigger(funcName).timeBased().at(date).create();
}

function deleteTrigger(funcName){
  const triggers = ScriptApp.getProjectTriggers();
  for(const trigger of triggers){
    if(trigger.getHandlerFunction() == funcName){
      ScriptApp.deleteTrigger(trigger);
    }
  }
}

コードで出来なかったので、渋々この画面から設定しています。

おしまい

135ml
135ml

くそ~、トリガーがコードで上手く設定できなかったのが悔しかったな~。

リサちゃん
リサちゃん

大根をつい食ってしまって悔しいな~。 ボリボリ

135ml
135ml

おい、そろそろ干す工程は終わりそうだが、そんなに食ってたら出来上がる前に無くなっちまうぞ・・・。

以上になります!

コメント

タイトルとURLをコピーしました