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

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

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

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

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

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

Q&A

解決済

1回答

2671閲覧

GAS メール→スプレッドシート転記の際に、1行を分割してセルに記入する方法

snow14

総合スコア9

Google スプレッドシート

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

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

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

0グッド

0クリップ

投稿2020/07/05 06:53

前提・実現したいこと

Gmailにドリンクオーダーの通知が入ります。
その通知内容をGASを使って、スプレッドシートにまとめて、月末に料金計算をしたいと思っています。

例)ドリンクオーダーで下記のようなメールが届きます。

  A会議室からドリンクオーダーがありました。
コーヒー×1
お茶×1
お水×1

上記メールの受信日時、会議室名(上記の場合はA会議室)、オーダーの内容(コーヒー×1、お茶×1)をスプレッドシートにまとめたい。

その際に、“コーヒー×1”が一つのセルに入ってしまい、あとで集計ができません。
その為、“コーヒー×1” を “コーヒー” と “1” を記入するセル分けたいです。

発生している問題・エラーメッセージ

下記46行目がエラーメッセージが出ます。
これです→ sh.getRange(‘C1’).splitTextToColumns(‘‘);}

メールからスプレッドシートにまとめるコードは下記のように書いています。

function getMailToiawase()
{var sheet = SpreadsheetApp.getActiveSheet();
var search = 'からの注文のお知らせ';
var start = 0;
var max = 100;
var thds = GmailApp.search(search,start,max);
var row = 1;
for(var n in thds)
{var thd = thds[n];
var msgs = thd.getMessages();
for(m in msgs)
{var msg = msgs[m];
var date = msg.getDate();
var body = msg.getBody();
var bodys= body.replace('から以下の注文がありました。','')
.replace('You have received a request from R1.','')
.replace('Items','')
.replace('注文内容','')
.replace('-----------------------------------------------------','')
.replace('このメールは、[ACALL]より送信しております。','')
.replace('直接ご返信いただけませんのでご注意ください。','')
.replace('This is an automated email system at ACALL Inc.','')
.replace('Please do not reply to this message.','')
.replace('https://www.acall.jp ','');
var ary = bodys.split("\n");
var meetingroom = ary[0].substring(0).replace('\r','');
var tea1 = ary[3].substring(0).replace('\r','');
var tea2 = ary[4].substring(0).replace('\r','');
var tea3 = ary[5].substring(0).replace('\r','');
var tea4 = ary[6].substring(0).replace('\r','');
var tea5 = ary[7].substring(0).replace('\r','');

sheet.getRange(row,1).setValue(date); sheet.getRange(row,2).setValue(meetingroom); sheet.getRange(row,3).setValue(tea1); sheet.getRange(row,4).setValue(tea2); sheet.getRange(row,5).setValue(tea3); sheet.getRange(row,6).setValue(tea4); sheet.getRange(row,7).setValue(tea5); row++; } }

var range = sheet.getRange("A:G");
range.sort({column: 1, ascending: true});
{var sh = ss.getActiveSheet();
sh.getRange(‘C1’).splitTextToColumns(‘‘);}
}

該当のソースコード

{var sh = ss.getActiveSheet();
sh.getRange(‘C1’).splitTextToColumns(‘‘);}

試したこと

元々のコードが悪いのかと思い、メールからスプレッドシートへ転記する

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

guest

回答1

0

ベストアンサー

その為、“コーヒー×1” を “コーヒー” と “1” を記入するセル分けたいです。

string.split()を利用し、対象の文字列を"×"を区切り文字として分解(配列化)するのはいかがでしょうか?

投稿2020/07/05 07:06

takyafumin

総合スコア2335

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

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

snow14

2020/07/05 14:20

takyafuminさん、 ありがとうございます! その場合、どのようにコードを書けば宜しいのでしょうか。教えて頂けないでしょうか。
takyafumin

2020/07/05 23:19

調べればすぐ出てくることだと思いますので、コードを提示する気はありません。
takyafumin

2020/07/06 00:00

ちょっと言い方がきつかったですね。 提示した「string」クラスの「split()」メソッドの機能を調べて、やれることをやってみてください。 それでもわからない点は、試したことを質問文に追記してわからない点を明記してください。 がんばってください。
snow14

2020/07/06 02:07

承知しました。ご丁寧にご回答ありがとうございます。
snow14

2020/07/09 04:37

解決しました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問