Googleスプレッドシートの情報をpdfにして所定のディレクトリ(Googleドライブ)に格納する。

電脳備忘録

本記事のソースコードの利用によって生じた損害について、当方は一切の責任を負いません。ご自身の判断と責任のもとで参照・ご利用ください。

この記事は最終更新から3年以上経過しています。

正確には、Googleスプレッドシートの最後の列の情報をGoogleドキュメントに差し込み、pdf形式で所定のディレクトリ(Googleドライブ)に格納。

addFileがいつの間にか廃止され使用できなくなっていたため、意図した動作にならず作り直す羽目に・・・。

差し込み用のGoogleドキュメントはこんな感じ。

氏名            :◆◆name◆◆

氏名(かな)    :◆◆kana◆◆

氏名(ローマ字):◆◆roma◆◆

生年月日    :◆◆birthday◆◆

改修したGASがこれ。試行錯誤の末、なんとか意図した動作になった。

function generateDocument() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("シート名");
  var lastRow = sheet.getLastRow();
  var dataRange = sheet.getRange(lastRow, 1, 1, sheet.getLastColumn());
  var data = dataRange.getValues()[0];

  // テンプレートドキュメントを開く
  var templateDocId = "テンプレートドキュメント(Googleドキュメント)のファイルID";
  var templateDoc = DocumentApp.openById(templateDocId);

  // テンプレートの内容を取得
  var templateBody = templateDoc.getBody();
  var templateText = templateBody.getText();

  // データの差し込み処理
  var name = data[1];
  var kana = data[2];
  var roma       = data[3];
  var birthday   = data[4];


  // テンプレートの差し込み処理
  var replacedText = templateText.replace(/◆◆name◆◆/g, name);
  replacedText = replacedText.replace(/◆◆kana◆◆/g, kana);
  replacedText = replacedText.replace(/◆◆roma◆◆/g,roma);
  replacedText = replacedText.replace(/◆◆birthday◆◆/g,birthday);

  
  // 新しいドキュメントを作成
  var newDoc = DocumentApp.create("【お問い合わせ】" + name); //お問い合わせ 名前がファイル名となる。
  var newBody = newDoc.getBody();
  newBody.setText(replacedText);

  newDoc.saveAndClose();

  // ドキュメントを指定したディレクトリに保存
  var saveDirId = "保存先のGoogleドライブのディレクトリID";
  var saveDir = DriveApp.getFolderById(saveDirId);
  var newDocFile = DriveApp.getFileById(newDoc.getId());
  saveDir.createFile(newDocFile.getAs(MimeType.PDF));
};

ファイル保存の方法として備忘録として残しておきましょうかね・・・。

0%