本ページはあくまで事例の紹介であり、貴社のポリシーによって手順は異なる場合があります。実際の連携方法については 貴社システム管理者またはサービス提供元(外部ツール)にご相談ください。
WebhookとGoogle Apps Scriptを活用し、kintoneで受け付けた依頼を案件管理に自動反映する方法を記載します。
コミュニケーションの中心がメールではない場合も、案件管理を活用して法務案件の管理やナレッジの蓄積などが可能です。
また、本連携方法では、Googleドライブに格納したファイルを添付ファイルとして案件管理に反映できるため、LegalForceへのファイル取り込みもスムーズに実施できます。
ご注意点
本連携方法では、Google Apps Scriptを使用し、Googleドライブの共有リンクからファイルを取得・添付する処理を行います。 そのため、共有リンク(Googleドライブに格納したファイル)の共有範囲には、スクリプト作成者(後述の「1. Google Apps Scriptの作成」の実行ユーザー)も含まれている必要があります。 ※スクリプト作成者のアクセス権限がない共有リンクをkintoneのフォームに貼った場合、案件上にファイルは添付されません。 |
✓目次
事前準備
本連携を行うには、以下の製品が導入されている必要があります。
kintone
Google Workspace
Googleドライブ
Googleスプレッドシート
Google Apps Script
※Google Apps Scriptは、組織によっては利用を禁止されている場合があります。事前に情報システム部門にご相談いただくことをおすすめします。
なお、本連携には案件管理の「案件依頼用メールアドレス」が必要です。事前に案件依頼用メールアドレスをメモ帳などに控えてください。
※案件依頼用メールアドレスの確認方法はこちらをご覧ください。
設定手順
1. Google Apps Scriptを作成する
①Googleスプレッドシートを新規作成し、任意のファイル名に変更する
※シート名も任意の名称に変更可能です(シート名を変更した場合は、「⑥⑤で入力したコードを修正」でコードを修正する必要があります)。
②1行目に以下の通りに列名を入力する
※A1セルから入力してください。
日時 | 依頼者メールアドレス | 依頼者 | 依頼者所属部署 | 相手方企業名 | 契約締結の背景 | 希望納期 | 契約類型 | 契約書リンク1 | 契約書リンク2 | 契約書リンク3 |
③[拡張機能]→[Apps Script]の順にクリックする
④プロジェクトタイトルを任意の名称に変更する
⑤テンプレートとして入力されているコードを削除し、以下のコードを入力する
以下のコードをコピーアンドペーストしてください。
function doPost(e) {
// kintoneからの更新データをeで受け取ったものをパースする
var params = JSON.parse(e.postData.getDataAsString());
var activeSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); // 現在のスプレッドシートを取得
//修正箇所①
//シート名が「シート1」でない場合は""内をシート名に書き換える
var mySheet = activeSpreadSheet.getSheetByName("シート1");// 回答が記載されるシート名を指定
var lastRow = mySheet.getLastRow();//シートの最終行を指定
//現在時刻を取得し、「2023/01/01 13:00」の形式にフォーマット
var today = new Date();
var todayStr = Utilities.formatDate(today,"JST","yyyy/MM/dd HH:mm");
//kintoneから受け取ったJSON形式のデータから、値を取り出し、変数に格納する
var appName = params.app.name;
var requesterMail = params.record.requesterMail.value;
var requesterName = params.record.requesterName.value;
var department = params.record.department.value;//所属
var companyName = params.record.companyName.value;//相手先企業名
var background = params.record.background.value;//依頼背景
var deadLine = params.record.deadLine.value;//納期
var typology = params.record.typology.value;//類型
var documentUrl1 = params.record.documentUrl1.value;//契約書リンク1
var documentUrl2 = params.record.documentUrl2.value;//契約書リンク2
var documentUrl3 = params.record.documentUrl3.value;//契約書リンク3
//変数に格納した値をスプレッドシートの最終行の書き込み
mySheet.getRange(lastRow+1,1).setValue(todayStr);
mySheet.getRange(lastRow+1,2).setValue(requesterMail);
mySheet.getRange(lastRow+1,3).setValue(requesterName);
mySheet.getRange(lastRow+1,4).setValue(department);
mySheet.getRange(lastRow+1,5).setValue(companyName);
mySheet.getRange(lastRow+1,6).setValue(background);
mySheet.getRange(lastRow+1,7).setValue(deadLine);
mySheet.getRange(lastRow+1,8).setValue(typology);
mySheet.getRange(lastRow+1,9).setValue(documentUrl1);
mySheet.getRange(lastRow+1,10).setValue(documentUrl2);
mySheet.getRange(lastRow+1,11).setValue(documentUrl3);
//修正箇所②
//以下の"legal.request@XXX.legalforce-cloud.com"の部分を、案件依頼用メールアドレスに修正する
var address = "legal.request@XXX.legalforce-cloud.com";
//メールの件名を記述する
var mailTitle = "【"+ department + "_"+ requesterName +"】"+companyName+"_"+typology+"_納期:"+deadLine;
//メール本文を記述する
var mailText =
"審査依頼がありました。" +"\n"+
"\n"+
"依頼日時:"+todayStr +"\n"+
"依頼者メールアドレス:"+requesterMail +"\n"+
"依頼者名:"+requesterName +"\n"+
"所属部署:"+department +"\n"+
"相手先社名:"+companyName +"\n"+
"依頼背景:"+"\n"
+background +"\n"+
"期限:"+deadLine +"\n"+
"契約類型:"+typology +"\n"+
"契約書リンク1:"+"\n"
+documentUrl1 +"\n"+
"契約書リンク2:"+"\n"
+documentUrl2 +"\n"+
"契約書リンク3:"+"\n"
+documentUrl3;
//Googleドライブのリンクから不要箇所を削除し、ファイルIDを取得する
var documentId1 = documentUrl1.toString().replace("https://docs.google.com/document/d/","").replace("https://drive.google.com/open?id=","").replace("https://docs.google.com/spreadsheets/d/","").replace("https://drive.google.com/file/d/","");
var documentId1split = documentId1.split(/[/?&]/);
var documentId1 = documentId1split[0];
var documentId2 = documentUrl2.toString().replace("https://docs.google.com/document/d/","").replace("https://drive.google.com/open?id=","").replace("https://docs.google.com/spreadsheets/d/","").replace("https://drive.google.com/file/d/","");
var documentId2split = documentId2.split(/[/?&]/);
var documentId2 = documentId2split[0];
var documentId3 = documentUrl3.toString().replace("https://docs.google.com/document/d/","").replace("https://drive.google.com/open?id=","").replace("https://docs.google.com/spreadsheets/d/","").replace("https://drive.google.com/file/d/","");
var documentId3split = documentId3.split(/[/?&]/);
var documentId3 = documentId3split[0];
//添付ファイルを格納するための配列を作成
let attachFiles =new Array();
//添付ファイルの配列番号の変数を作成
var fileNum = 0;
//契約書リンク1~3のファイルIDを指定し、Googleドライブからファイルを取得し、配列に格納
//契約書リンク記載されていない場合や、リンクが不正な場合は例外処理の上、次へ
try{
var doc1 = DriveApp.getFileById(documentId1).getBlob();
attachFiles[fileNum] = doc1;
fileNum =fileNum + 1 ;
}catch(e){
Logger.log("契約書1が添付できませんでした");
}
try{
var doc2 = DriveApp.getFileById(documentId2).getBlob();
attachFiles[fileNum] = doc2;
fileNum =fileNum + 1 ;
}catch(e){
Logger.log("契約書2が添付できませんでした");
}
try{
var doc3 = DriveApp.getFileById(documentId3).getBlob();
attachFiles[fileNum] = doc3;
fileNum =fileNum + 1 ;
}catch(e){
Logger.log("契約書3が添付できませんでした");
}
//添付ファイル・CCを設定する
let options = {
"attachments":attachFiles,
//修正箇所③
//CCに追加したいアドレスがある場合、""内に記載の上、先頭の//を削除
//"cc":""
};
//MailAppで宛先、件名、本文、オプションを引数にしてメールを送付
MailApp.sendEmail(address, mailTitle, mailText, options);
}
⑥入力したコードを修正する
コピーアンドペーストしたコードの以下3箇所を修正してください。
⑥-1 【シート名を「シート1」以外としている場合】修正箇所① の””内を適切なシート名に修正する
//修正箇所① //シート名が「シート1」でない場合は""内をシート名に書き換える
var mySheet = activeSpreadSheet.getSheetByName("シート1");// 回答が記載されるシート名を指定
例)シート名を「kintone連携用」とした場合
//修正箇所① //シート名が「シート1」でない場合は""内をシート名に書き換える
var mySheet = activeSpreadSheet.getSheetByName("kintone連携用");// 回答が記載されるシート名を指定
⑥-2 修正箇所② の”"内を自テナントの「案件依頼用メールアドレス」に修正する
※案件依頼用メールアドレスの確認方法はこちらをご覧ください。
//修正箇所② //以下の"legal.request@XXX.legalforce-cloud.com"の部分に、案件依頼用メールアドレスを記述する
let address = "legal.request@XXX.legalforce-cloud.com";
例)案件依頼用メールアドレスが「legal.request@abc123.legalforce-cloud.com」の場合
//修正箇所② //以下の"legal.request@XXX.legalforce-cloud.com"の部分に、案件依頼用メールアドレスを記述する
let address = "legal.request@abc123.legalforce-cloud.com";
⑥-3 【案件をCCで受信したいアドレスがある場合】修正箇所③の"”内にメールアドレスを記載し、行の先頭の//を削除する
//修正箇所③ //CCに追加したいアドレスがある場合、""内に記載の上、先頭の//を削除
//"cc":""
例)CCで「taro.legal@legalontech.jp」にも依頼メールを送信する場合
//修正箇所③ //CCに追加したいアドレスがある場合、""内に記載の上、先頭の//を削除
"cc":"taro.legal@legalontech.jp"
⑦「保存」マークをクリックする
⑧画面右側の[デプロイ]→[新しいデプロイ]の順にクリックする
⑨[歯車]マーク→[ウェブアプリ]の順にクリックする
⑩以下の3項目を設定し、[デプロイ]をクリックする
項目 | 説明 |
新しい説明文 | 任意の説明文を入力する |
次のユーザーとして実行 | 「自分(メールアドレス)」を選択する |
アクセスできるユーザー | 「全員」を選択する |
⑪[アクセスを承認]をクリックする
⑫実行するユーザー を選択し、[Allow]ボタンをクリックする
⑬「ウェブアプリ」のURLをコピーし、[完了]をクリックする
[Allow]ボタンをクリックすると以下の画面が表示されます。メモ帳などにURLを控えてください。
※デプロイ後にスクリプトを修正する必要が生じた場合は「スクリプト修正が発生した場合の再デプロイ手順 」をご覧ください。
2. kintoneアプリを作成する
①「アプリ」の右側の[+]をクリックする
②[はじめから作成]をクリックする
③アプリ作成画面からフォームを作成のうえ、[フォームを保存]をクリックする
③-1 アプリのタイトルを入力する(任意名称)
③-2 フォームの設問を下表の通りに作成する
左のフィールド一覧から、配置したいフィールドを右側にドラッグアンドドロップし、各フィールドを設定してください。
使用するフィールド | フィールド名 | 項目と順番 | 必須項目にする | フィールドコード |
作成日時 | 作成日時 | - | ✓ | timeStamp |
文字列(1行) | 依頼者メールアドレス | - | ✓ | requesterMail |
文字列(1行) | 依頼者名 | - | ✓ | requesterName |
ドロップダウン | 依頼者所属部署 | 依頼元部署の名称の短縮形で選択肢を作成 | ✓ | department |
文字列(1行) | 相手方企業名 | - | ✓ | companyName |
文字列(複数行) | 契約締結の背景 | - | ✓ | background |
日付 | 希望納期 | - | ✓ | deadLine |
ドロップダウン | 契約類型 | 頻繁に依頼がある類型で作成 | ✓ | typology |
文字列(1行) | 契約書リンク1 ※Googleドライブにアップロードの上、共有リンクを貼り付け |
|
| documentUrl1 |
文字列(1行) | 契約書リンク2 ※Googleドライブにアップロードの上、共有リンクを貼り付け |
|
| documentUrl2 |
文字列(1行) | 契約書リンク3 ※Googleドライブにアップロードの上、共有リンクを貼り付け |
|
| documentUrl3 |
上表の「契約書リンク」について、運用上のご注意点
Google Apps Scriptでは、Googleドライブの共有リンクからファイルを取得・添付する処理を行います。 そのため、「契約書リンク」に貼る共有リンクの共有範囲には、スクリプト作成者(前述の「1. Google Apps Scriptの作成」の実行ユーザー)も含まれている必要があります。 ※スクリプト作成者のアクセス権限がない共有リンクを「契約書リンク」に貼った場合、案件上にファイルは添付されません。 |
③-3 フォームの作成が完了したら、[フォームを保存]をクリックする
④[設定]タブ→[Webhook]の順にクリックする
⑤[追加する]をクリックする
⑥以下の4項目を設定し、[保存]をクリックする
項目 | 説明 |
説明 | 任意の説明文を入力 |
Webhook URL | 「1. Google Apps Scriptの作成 - 手順⑬」でコピーしたURLを貼り付ける |
通知を送信する条件 | [レコードの追加]にチェックを入れる |
有効化 | [このWebhookを有効にする]にチェックを入れる |
以上で設定は完了です。
作成したフォームからテスト送信し、動作確認(Googleスプレッドシートへの書き込み、および案件管理での案件反映)のうえご利用ください。
スクリプト修正が発生した場合の再デプロイ手順デプロイ後にスクリプトを修正した場合は、再デプロイする必要があります。
①修正後のスクリプトを上書き保存する②画面右上の[デプロイ]→[デプロイを管理]の順にクリックする③「鉛筆」マーク→[バージョン]の順にクリックし、[新しいバージョン]を選択して[デプロイ]をクリックする |