前提・実現したいこと
プログラミング初学者です。
現在、GASを使用して、自動でGmailのメールの内容をスプレットシートに転記するスクリプトを作成しています。
発生している問題・エラーメッセージ
以下のURLのページにあるように、複数のメールの内容を二次元の配列に格納した後その配列の中身をスプレットシートに転記したいが、以下のようなエラーメッセージが出て実行できない https://tonari-it.com/gas-gmail-spreadsheet/ ```範囲の行数には 1 以上を指定してください。 ### 該当のソースコード ```gas ソースコード ```// スプレッドシートにメール内容を書き込む function mailToSheet () { // 書き込むシートURL var sheet_url = 'https://docs.google.com~~~~~~'; // 書き込むシート名 var sheet_name = 'シート1'; Logger.log("15行目まで正常 ") //メールを取得する // 日報という文字列を含むか var strTerms = '/.*/ + 日報 + /.*/'; //条件にあった受信トレイの何個めまでのスレッドを取得する?0から100まで var mythreads = GmailApp.getInboxThreads(0, 100); var myMsgs = GmailApp.getMessagesForThreads(mythreads); var valMsgs = []; /* 各メールから日時、送信元、件名、内容を取り出す*/ for(var i = 0;i < myMsgs.length;i++){ valMsgs[i] = []; //送ってきた月を取得 //valMsgs[i][0] = myMsgs[i][0].getMonth(); valMsgs[i][0] = valMsgs[i][0] + 1 //送ってきた日を取得 valMsgs[i][1] = myMsgs[i][0].getDate(); //shop_nameに件名を格納する var Shop_name = myMsgs[i][0].getSubject(); //bodystrという場所に本文の内容を入れる bodystr = myMsgs[i][0].getBody(); var string = bodystr.replace(/<("[^"]*"|'[^']*'|[^'">])*>/g,''); var string = string.replace(/\D/g,','); var string = string.replace(/,+/g,','); var string = string.slice(1); var string = string.slice(0,-1); var words = string.split(','); valMsgs[i][2] = words[0];//総来店数 valMsgs[i][3] = words[1];//既存数 valMsgs[i][4] = words[2];//エリア外 //中略 valMsgs[i][101] = words[153]; /* スプレッドシートに出力 */ for(var i=0;i < myMsgs.length;i++){ SpreadsheetApp.getActiveSheet().getRange(2, 3, i, 102).setValues(valMsgs); } } ### 試したこと SpreadsheetApp.getActiveSheet().getRange(2, 3, i, 102).setValues(valMsgs) 下から3行めのこのコードのiの部分を1にして、該当するメールを1つにした場合は正常に動作しました。 そのため、エラーを吐いているのは以下のコードの場所のみだと思います。 for(var i=0;i < myMsgs.length;i++){ SpreadsheetApp.getActiveSheet().getRange(2, 3, i, 102).setValues(valMsgs); } ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/30 22:39
2019/05/31 04:33