現役情シスが送る実践的Tips集

2020/08/31

【Gmail】共有テンプレートでメール業務はもっと楽になる

こんにちは。

今回は以前投稿したテンプレートアドオンのおまけで、テンプレートを共有化してみました。

元の記事はこちら。

【Gmail】テンプレートアドオンをインストールしよう

 

概要

以下のような観点からGmailのテンプレートを共有したいと考えたことはないでしょうか。

・カスタマーサポートをチームで行っているが担当者によって文言が微妙に違う
・新人や中途社員でもすぐメール業務を開始できるようにしたい
・メールテンプレートの更新を一括で行いたい

 アドオンのカスタマイズで共有化が実現できたのでご紹介します。

  

前提条件

・Gmailを利用している
・共有テンプレートの管理者を決めておく (テンプレートの更新は管理者のみとしておくことを推奨する)

 

導入手順

1. 共有テンプレート用スプレッドシートを準備する  (全文解説)
2. プログラミングする (差分解説)
3. Gmailに組み込む (省略)
4. 試してみる (差分解説)

流れは元のアドオンとほぼ同じため差分だけの解説とさせていただきます。

  

共有テンプレート用スプレッドシートを準備する (全文解説)

①テンプレート管理者は任意の場所に以下のスプレッドシートを作成する

※ 元のアドオンを実装済みの方は「gmail_template_list」を複製するだけで良い

・ファイル名:任意
・保存場所:任意
・シート名:list
・内容:
・A1:No
・B1:Title
・C1:Message

以下はスプレッドシートのサンプルです。

spleadsheet1

 

 

②作成したスプレッドシートを共有設定する

ユーザーの権限設定は以下が望ましい

・スプレッドシートを更新する人:「編集者
・それ以外のテンプレート利用者:「閲覧者

 

③スプレッドシートのURLから以下赤字部分を控える

例. https://docs.google.com/spreadsheets/d/13D_mdsvjyVd5Qxg_JS4CKb544dVdZrNyZCzY-IL7Po/

 

プログラミングする (差分解説)

~中略~

③以下のプログラムコードをコピーして…

// main
function buildTemplateComposeCard() {
  // settings template SpleadSheetID and SheetName (SpleadSheet must be shared)
  var ssID  = "スプレッドシートのID";
  var ssSName = "list";
  var ssUrl = DriveApp.getFileById(ssID).getUrl();

  // ①. Define Button "Show SpleadSheet"
  var showSSButton = CardService.newTextButton()
    .setText('Show Template')
    .setTextButtonStyle(CardService.TextButtonStyle.FILLED)
    .setBackgroundColor('#696969')
    .setOpenLink(CardService.newOpenLink()
      .setUrl(ssUrl)
      .setOnClose(CardService.OnClose.RELOAD_ADD_ON));

  // ②. exists template data. Display tempate list.
  var ss = SpreadsheetApp.openByUrl(ssUrl);
  var startRow = 1;
  var startCol = 1;
  var lastRow = ss.getLastRow();
  var lastCol = ss.getLastColumn();
  var ssData= ss.getSheetByName(ssSName).getRange(startRow,startCol,lastRow,lastCol).getValues();
  var buttons = CardService.newCardSection()

  for( var i=1; i<ssData.length; i++ ) {
    buttons.addWidget(CardService.newTextButton()
      .setText(ssData[i][1])
      .setOnClickAction(CardService.newAction()
        .setFunctionName('applyInsertTemplateAction')
        .setParameters({'message': ssData[i][2]})))
  }

  // Define UI
  var card = CardService.newCardBuilder()
    .addSection(CardService.newCardSection()
      .addWidget(showSSButton))
    .addSection(buttons)
    .build();
  return [card];
}


// functions
// Define template Buttons
function applyInsertTemplateAction(e) {
  var messages = e.parameters['message'];
  var sp_messages = messages.split(String.fromCharCode(10)).join(''); // ”\n” convert HTML format.
  var response = CardService.newUpdateDraftActionResponseBuilder()
    .setUpdateDraftBodyAction(CardService.newUpdateDraftBodyAction()
      .addUpdateContent(
        sp_messages,
        CardService.ContentType.MUTABLE_HTML)
      .setUpdateType(CardService.UpdateDraftBodyType.IN_PLACE_INSERT))
    .build();
  return response;
}

「コード.gs」タブに上書き貼り付けし、4行目の以下 スプレッドシートのID を1-③で控えた文字に置換する

  var ssID  = "スプレッドシートのID";

 

~中略~

⑦以下のプログラムコードをコピーして…


{
"timeZone": "Asia/Tokyo",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"oauthScopes": [
"https://www.googleapis.com/auth/gmail.addons.execute",
"https://www.googleapis.com/auth/gmail.addons.current.action.compose",
"https://www.googleapis.com/auth/gmail.addons.current.message.metadata",
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/drive"
],
"gmail": {
"name": "gmail_share_template",
"logoUrl":
"https://www.gstatic.com/images/icons/material/system/1x/label_googblue_24dp.png",
"primaryColor": "#45c4bf",
"secondaryColor": "#0000FF",
"composeTrigger": {
"selectActions": [
{
"text": "Build Mail Share Template",
"runFunction": "buildTemplateComposeCard"
}
]
}
}
}

「appsscript.json」タブに上書き貼り付けする

~中略~

⑪「Deployment ID」 の値をコピーし、共有テンプレートを利用するメンバーに共有する

 

Gmailに組み込む (省略)

※ 本手順は共有テンプレートの管理者・利用者共に実施すること

 

~中略~

⑥「インストール済みのデベロッパーアドオン」に「gmail_share_template」が表示されたら組み込み完了

  

試してみる

※ 本手順は共有テンプレートの管理者・利用者共に実施すること

 

~中略~

④警告画面が表示されるが「詳細」をクリックし…

下に展開された「gmail_share_template」をクリックする

※ 画像省略

 

~中略~

⑥「アクセス承認」が完了するとテンプレート機能が利用可能になる

 テンプレートの内容を確認したい場合は「SHOW TEMPLATE」をクリックする

 ※ スプレッドシートの「編集者」権限のみテンプレートの更新が可能

gmail addon1

 

以上。

 

補足

・件名、宛先の追加機能はまだない (アドオン側が未実装)
・スプレッドシートのTitleに数字のみはNG
・スプレッドシートの各列はすべて入力必須項目
・スプレッドシートの入力ミスなどでテンプレート機能が正常に動作しなくなった場合はGoogleドライブからスプレッドシートを直接開いて修正する
・コードはグローバル対応のため英語表記ですが (自己責任で) ソースを修正して日本語表記にすることも可能です
・くどいようですが、本機能はあくまで自分(あなた)が自作したものであり例えるならExcelの自作マクロと同等であるため、企業にありがちなセキュリティ要件はクリアできます
・AndroidのGmailアプリでも同じテンプレートが利用できます (iPhone未対応)
・機能を呼び出すアイコンが元のテンプレートアドオンと同じ青いラベルになっています。両方使う方はご注意ください。 (良いものがあれば追記予定)

 

最後に

2重更新の手間を省くために元のテンプレートアドオン記事からの差分のみの解説となっており、読みにくくて大変申し訳ないです。

わかりにくいという声が多い場合は再投稿も検討するため遠慮なくコメントしてください。

本投稿時点では類似機能はリリースされていないようなので興味がある方は検討の余地ありだと思います。

また、アドオン側の機能強化により宛先追加などが可能になった際は改修版を公開したいと思います。

 
場所: 日本

0 comments:

コメントを投稿