0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

個人情報は分けてGASを使う

Last updated at Posted at 2020-09-24

やったこと
・特定のシートを複数PDF化けること。
・別途JSONファイルを保存して、そこから個人情報を取得すること
・複数のPDFをメールに添付すること。

経緯:
今まで直書きしてたけど、.envfile のように個人情報は分けたくなりました。

下記のようなJSONファイルを用意

{
  "user_info": {
    "mail_adress": [
      "hoge@gmail.com",
      "huge@gmail.com"
    ]
  }
}

コードがこちら

//個人データを保存したJSONファイル。共有用ファイルから確認可能。
const file_id = "1Jo6Dx6QPU_baFnCUzXlFiFyjRpyS71Nq";
//送信内容を保存したスプレッドシートのID
const sheet_id = "1x6olwI_XZALOzayxh0vXlxKXqtzhEwT_b92c0QUW7zY";

function sendMail(){
  
  const currentTime = new Date();
  //ファイルIDを元にスプレッドシートを開く
  // 実行ファイルを利用する場合は、SpreadsheetApp.getActiveSpreadsheet();, spreadsheet.getId();でも可。

  const spreadsheet = SpreadsheetApp.openById(sheet_id);
  
  const seetNameList = ["sample1", "sample2"];

  const token = ScriptApp.getOAuthToken();

  //PDFファイル配列を作成するためのmap処理
  const pdfFiles = seetNameList.map(function(seet){ 
    //seetNameListから取得したseet名を元にsheetを取得
    const sheetName = spreadsheet.getSheetByName(seet);
    const gid = sheetName.getSheetId();
   //PDF生成するURLをfetchする。特定のスプレッドシートの特定のシートだけPDF化するため
    const url = `https://docs.google.com/spreadsheets/d/${sheet_id}/export?gid=${gid}&format=pdf&portrait=false&size=A4&gridlines=false&fitw=true`;
    const pdf = UrlFetchApp.fetch(url, {headers: {'Authorization': 'Bearer ' +  token}}).getBlob().setName(`${currentTime}.pdf`);
    return pdf
  });

  // Jsonファイルを元にデータを取得
  var file = DriveApp.getFileById(file_id);
  // objectとして取得。 中身は空
  var blob = file.getBlob();
  var data = blob.getDataAsString();
  var jobj = JSON.parse(data);

  //jsonファイルに保存した連絡先の取得
 const contactLists = jobj.user_info.mail_adress;
 
   for (let i = 0; i < contactLists.length; i++) {
    var to = contactLists[i];
    var subject = "メールのタイトルを入力";
    var body ="メールの本文を入力"; 
    
    GmailApp.sendEmail(to,
                       subject,
                       body,
                       {attachments: pdfFiles})
  }
}

ファイル名に時間を利用していますが、表記に利用するならmoment ライブラリを利用するのがおすすめです。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?