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

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

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

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

JavaScript

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1178閲覧

スプレッドシートの内容をCWに送信

4n5

総合スコア16

Google Apps Script

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

JavaScript

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2018/08/12 01:56

編集2018/08/13 15:25

GAS(GoogleAppsScript)について質問です。
毎日定刻にスプレッドシートの内容をチャットワークに送信するスクリプトを書きたいんですがググってもイマイチ分からずでして・・・

まず、やりたいことと情報です。
1.毎日定刻に送りたい(時間指定スクリプトとトリガーで何とかなりそうです)
2.曜日別で送りたい
3.スプシ内シート別で曜日分けしている
4.送信内容はシート記載内容A:B列
5.CWへ送信する際、スプシ通りにA列の右側にB列といった表示形式にしたい

分かる方ご教授いただければと思います。

不足等ありましたらご指摘いただければと思います。
宜しくお願い致します。

5に関しては現在以下のコードですが、チャットワークへ送信した際にカンマ区切りにて1行で表示されてしまうために可読性に優れず、スプシで表示されている通り列ごとで表示したいと考えています。

//シートの最終行番号、最終列番号を取得 var startRow = 1; var startColumn = 1; var lastRow = sheet.getLastRow(); var lastColumn = sheet.getLastColumn(); // シートの縦横すべてを取得 var sheetData = sheet.getSheetValues(startRow, startColumn, lastRow, 2); //チャットワークに送る文字列を生成    var strBody = "[info]​\n" + sheetData + "​[/info]";

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

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

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

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

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

guest

回答1

0

ベストアンサー

1.毎日定刻に送りたい(時間指定スクリプトとトリガーで何とかなりそうです)

おっしゃる通りトリガーで時間指定すればよいです。

2.曜日別で送りたい

3.スプシ内シート別で曜日分けしている

function内で

js

1var today = new Date(); 2var day = today.getDay(); 3 4if (day === 0) { 5 spreadsheet.getSheetByName('日'); 6} 7else if (day === 1) { 8 spreadsheet.getSheetByName('月'); 9} 10

のようにして取得するシートを分ける

4.送信内容はシート記載内容A:B列

記載のコードでいいはず

5.CWへ送信する際、スプシ通りにA列の右側にB列といった表示形式にしたい

sheetDataは配列で取得できているので、forで回すなりなんなりして
strBodyを整形すればよい。

ChatWorkはマークダウンなどが使えないので、列を揃えるとなると難しいですが、行ごとに送信するだけなら。
一例ですが

js

1var strBody = "[info]​\n"; 2for each (var row in sheetData) { 3 for (var i in row){ 4 var v = row[i]; 5 if (i !== 0) { 6 strBody += " : "; 7 } 8 strBody += v; 9 } 10 strBody += "\n"; 11} 12strBody += "[/info]";

投稿2018/08/15 05:32

編集2018/08/16 04:42
macaron_xxx

総合スコア3191

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

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

4n5

2018/08/15 22:54 編集

ありがとうございます。 記載いただいたコードの場合、 if (day === 0) { spreadsheet.getSheetByname('日');} else if (day === 1) { ~  else (day === 6);{ spreadsheet.getSheetByname('土'); } となると思いますが、これだと【オブジェクト Spreadsheet で関数 getSheetByname が見つかりません】と当日の曜日の行{今日なら(木)}でエラーを吐いてしまいます。。。 シート名に相違はありません。 また、5.に関してどのように整形すればよろしいでしょうか? 当方初心者のため大変恐縮ではありますが、詳細をご教示いただけると助かります。 宜しくお願い致します。
macaron_xxx

2018/08/16 04:43

回答に追記しました。 そりゃエラー吐きますよ。 関数名が違いますもん。
4n5

2018/08/16 21:57

「Name」が「name」となっていたためですね。。 追記ありがとうございます! 何とか思っていた形にできました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問