質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

0回答

1495閲覧

Google Apps Scritptにて、form回答内容をPDF化及び(PDF添付付きで)メールアドレスへの送信処理

Uzo

総合スコア12

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

2クリップ

投稿2019/07/29 02:28

編集2019/07/29 02:47

前提・実現したいこと

①Google form回答内容のPDF化
②上記PDF添付の上で、メールアドレスへ送信処理
(メールアドレスはgmailではなく、会社ドメインアドレスです)
言語名:Google Apps Script

上記機能を実装中に以下の問題が発生しました。

発生している問題

事象詳細
①アンケート回答内容展開前のスプレッドシートにてPDF化(従前と変わらず)
→1つ前のアンケート回答者の内容が反映されている状態になってしまっています。
(1人目のアンケート回答者の場合は、回答項目はすべて空白状態です)

②メール大量発生
→フォーム全項目(約60項目)と同じ数のメール(約60通)が発生しています。
1通のメールに付き、フォームの質問/回答が1つずつ増える形で、合計60通ほどメールが届く状態です。
(何度かテスト致しました)
また、全メールに展開前のスプレッドシート内容のPDF添付はあります。

トリガーログ
→「1 日にサービス email を実行した回数が多すぎます。
at onFormSubmit(コード:57)」

該当のソースコード

(以下)

// FormApp.getActiveForm()
function onFormSubmit(e){

////////////////////////////////////////////////////
// 変える可能性のある変数
////////////////////////////////////////////////////

var to = ""; //送信先のメールアドレス
var spreadSheetId = "";//スプレッドシートID
var folderId = "";//PDF格納先のフォルダID

////////////////////////////////////////////////////

// メール送信先の設定
var admin ="";//管理者メールアドレス
var mail_name = "登録アドレス"
var cc = admin; // Cc:

// 件名、本文の設定
var header
= "登録カードの登録内容\n"

  • "──────────────────────────────────\n"; //本文のヘッダー

var footer
= "──────────────────────────────────\n\n"

var body =""; //本文

// ▼▼▼メール送信処理▼▼▼
var ss = SpreadsheetApp.openById(spreadSheetId);//スプレッドシートの選択
var ss_sheet = ss.getActiveSheet();//シートの選択
var FORM_DATA = e.response.getItemResponses();

body += header; // Formオブジェクトからタイトルを値を抜き出し、メール本文とスプレッドシートに展開 for (var j = 0; j < FORM_DATA.length; j++){ var item_title = FORM_DATA[j].getItem().getTitle(); var item_value = FORM_DATA[j].getResponse(); body += item_title +"\n"+ item_value + "\n\n"; ss_sheet.getRange(j+2,1).setValue(item_title);//Formのタイトルをシートに展開 ss_sheet.getRange(j+2,2).setValue(item_value);//Formの値をシートに展開 if (item_title=='氏名'){ var user_name = item_value;//氏名情報を変数に格納   if (item_title=='所属事務所'){ var office_name = item_value;//所属事務所情報を変数に格納 } } ss_sheet.getRange(FORM_DATA.length+3,1).setValue('署名'); body += footer; var date = new Date(); var date_format = Utilities.formatDate(date,'Asia/Tokyo','yyyyMMdd'); var pdfname = date_format + "_登録カード_"+ user_name +"+ office_name +".pdf";//PDFの名前 var pdf = ss_sheet.getParent().getAs('application/pdf'); var pdf_format = DriveApp.createFile(pdf).setName(pdfname); var file = DriveApp.getFilesByName(pdfname).next(); DriveApp.getFolderById(folderId).addFile(file); DriveApp.getRootFolder().removeFile(file); MailApp.sendEmail(to, pdfname, body, {attachments:pdf_format});

ss_sheet.getRange("B:B").clearContent();//展開したB列の内容をクリア
}

(以上)

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2019/07/29 02:41

(質問文は編集できます)質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
Uzo

2019/07/29 02:48

かしこまりました。 丁寧にルールを教えて頂きありがとうございます。 修正対応致しました。 宜しくお願い致します。
kei344

2019/07/29 02:51

PCであれば記入エリアの右部分あたりにリアルタイムに結果が表示されていると思うので、そこを見ながら調整してください。
Uzo

2019/07/29 02:55

分かりました! ありがとうございます。
papinianus

2019/07/29 09:12

やりたいことがわからないのですが、まさかフォームの回答なのに他人の回答も含む現時点の回答リストを送信しようとしてますか? コードを整形した結果、余計わけわからなくなってるので下手にいじるくらいなら、もとに戻してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問