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

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

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

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

JavaScript

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

Google

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

Q&A

解決済

2回答

2052閲覧

[gas]スプレッドシートの更新前のデータが添付されてしまう

mashiro_dm

総合スコア10

Google Apps Script

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

JavaScript

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

Google

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

0グッド

0クリップ

投稿2020/03/21 16:37

編集2020/03/21 17:13

次のようなことを実装したいのですが、3~4にかけての動作がうまくいかないようで、
転記前のデータが添付されてしまいます。
スリープ時間を設定しても変わりませんでした。
原因がわかると嬉しいです。

1.googleのフォームを送信する(トリガー)
2.フォームDBに回答を保存(フォームから設定済み)
3.最新の回答をテンプレートに転記
4.転記済みのスプレッドシートをメール送信

テンプレートのファイルを確認すると、フォームDBから転記はできている様子なのですが…
どなたかご教示いただけると幸いです。

gas

1function myFunction() { 2 // フォームDB 3 var spreadsheet_from = SpreadsheetApp.openById('XXXXX'); 4 var sheet_from = spreadsheet_from.getSheets()[0]; 5 var lastrow = sheet_from.getLastRow(); 6 // テンプレート 7 var spreadsheet_to = SpreadsheetApp.openById('YYYYYY'); 8 var sheet_to = spreadsheet_to.getSheets()[0]; 9 10 var copyValue = sheet_from.getRange(lastrow,1).getValues(); 11 sheet_to.getRange('I1').setValues(copyValue); 12 13 Utilities.sleep(120 * 1000); 14 15 var driveImage = DriveApp.getFilesByName("フォーマット").next(); 16 17 MailApp.sendEmail({ 18 to: 'zzzzzzzzzzzzzzzzzz@gmail.com', 19 subject: 'テスト', 20 body: 'ご査収ください。 \n よろしくお願いいたします。', 21 attachments: [driveImage.getBlob().setName('フォーマット')] 22 }); 23} 24

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

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

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

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

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

guest

回答2

0

Utilities.sleep(120 * 1000);のかわりに下記を追記

gas

1 SpreadsheetApp.flush() 2 var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/'YYYYYY'/edit');

投稿2020/03/22 06:28

mashiro_dm

総合スコア10

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

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

0

ベストアンサー

このコードで効果があるかは分かりません。が。

操作中のデータの反映を待つ目的でのsleepは無意味です。
SpreadsheetApp.flush()をしてください

投稿2020/03/22 02:12

papinianus

総合スコア12705

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

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

mashiro_dm

2020/03/22 06:26 編集

>操作中のデータの反映を待つ目的でのsleepは無意味です ご教示いただきありがとうございます。 待機時間の問題ではないとわかったおかげで、.flush()+ファイルを開きなおすことで解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問