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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

Q&A

1回答

5126閲覧

gasの質問です。エラーをどうにかしたいです。

aass12

総合スコア2

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

0グッド

0クリップ

投稿2020/05/23 11:57

編集2020/05/24 09:16

エラー: 無効なメール: [Ljava.lang.Object;@4561ee94
と、エラーが出ます。どうすれば解消されるのでしょか?


gasのリファレンス
で検索しましたが、原因が分かりません。
optionに配列で渡すとどうもエラーが出てきます。
配列で渡したいのですが、どうにかできないのでしょうか?
配列によっては、中身が空の時があるのですがそれはダメなのでしょうか?


gas

1function mail(){ 2 const sheet = SpreadsheetApp.getActiveSheet();  //spreadsheetをアクティブ化 3 const lastRow = sheet.getLastRow(); //最終行の取得 4 const document_id = ''; //dcumentのid 5 const doc = DocumentApp.openById(document_id); 6 const docText = doc.getBody().getText(); 7 sheet.getRange(1, 1, lastRow, 1).clear(); 8 sheet.getRange(1, 1, lastRow, 1).setFontColor("red"); 9 let a = 0; 10 const subValues = sheet.getRange(1, 8, 8, 1).getValues(); 11 const values = sheet.getRange(2, 2, lastRow, 4).getValues(); 12 const attached = sheet.getRange(2, 11, lastRow, 1).getValues(); 13 for(let i = 0; i < lastRow - 1; i++){ 14 const body = docText 15 .replace('{姓}',values[i][0]) //置換置換 16 .replace('{名}',values[i][1]) 17 .replace('{点数}',values[i][2]); 18 19 if(sheet.getRange(i+2, 11).isBlank()); 20 else{ 21 a = 1; 22 } 23 24 //添付ファイルがemptyかどうかを調べ、値が入力されていれば添付ファイルを送付する。 25 if(a == 1){ 26 let attachedI = attached[i].replace('https://drive.google.com/file/d/',''); 27 let attachedID = attachedI.replace('/view?usp=drivesdk',''); 28 let attachfile = DriveApp.getFileById(attachedID); 29 options ={name: subValues[1], cc: subValues[3], bcc: subValues[4], noReply: subValues[5], replyTo: subValues[6], attachments:attachfile}; 30 }else{ 31 options ={name: subValues[1], cc: subValues[3], bcc: subValues[4], noReply: subValues[5], replyTo: subValues[6]}; 32 } 33 //差出人、CC、BCC、replayの有無、replay先の変更を設定 34 GmailApp.sendEmail(values[i][3],subValues[2],body,options);//メール送信 ,options 35 sheet.getRange(i+2,1).setValue('送信済み'); 36 } 37}

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

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

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

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

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

guest

回答1

0

Range.getValues()は2次元配列を返すため、attachedは2次元配列(型がany[][])になります。そのためattached[i]は配列(any[])になるため、replaceメソッドはありません。
attached[i][0]の様に列の添字も付けてアクセスしてください。

投稿2020/05/23 13:31

draq

総合スコア2573

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

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

aass12

2020/05/24 02:16

attachedを二次元配列[i][1]としても、 getValues();からgetValue();に変更しても エラー([Ljava.lang.Object;@4561ee94)が出ました。 optionsには配列を渡せないのでしょうか? attachfile[i]を消した状態で実行してもエラー name: subValues[1]だけにしてもエラー optionに問題があるのではと考えていますが、改善の仕方が分かりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問