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

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

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

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

ChatWork

業務の効率化を目的としたコミュニケーションツール。 グループチャット、ビデオ・音声通話、ファイル共有、タスク管理などの機能を備えています。マルチデバイス対応で、ブラウザだけでなくタブレットやスマートフォンでも利用可能です。

Q&A

解決済

1回答

1221閲覧

スプレッドシートが変更されたら内容と標題をチャットワークに通知したい

NECOICE

総合スコア2

Google スプレッドシート

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

ChatWork

業務の効率化を目的としたコミュニケーションツール。 グループチャット、ビデオ・音声通話、ファイル共有、タスク管理などの機能を備えています。マルチデバイス対応で、ブラウザだけでなくタブレットやスマートフォンでも利用可能です。

0グッド

0クリップ

投稿2023/07/24 07:47

実現したいこと

A列 B列 C列
日付 標題 内容
とGoogleスプレッドシートがあるとして

スプレッドシートでC変更があった場合に
C列と標題のB列をチャットワークに通知したいです

試したこと

他の回答を見てみようみまねで設定してみましたが
変更の内容は通知できるのですが
どうしても変更箇所以外の標題の通知の仕方がわかりませんでした

どうか助けてください

該当のソースコード

// 更新日時を記録するのスプレッドシートのID // https://docs.google.com/spreadsheets/d/【ここ】/edit var SHEET_ID = 'シートID '; //スプレッドシートのシート名 var SHEET_NAME = 'シート名'; // ChatWork用定数 // チャットルームID // https://www.chatwork.com/#!rid【ここ】 var ROOM_ID = 'るーむID '; // アクセストークン var TOKEN = 'とーくん'; function postChatwork (message) { var payload = { 'body' : message }; var headers = { 'X-ChatWorkToken' : TOKEN }; var options = { 'method' : 'post', 'payload' : payload, 'headers' : headers }; UrlFetchApp.fetch('https://api.chatwork.com/v2/rooms/' + ROOM_ID + '/messages', options); } function onUpdateBatchCheck() { // スプレッドシートを特定 var spreadsheet = SpreadsheetApp.openById(SHEET_ID); var sheet = spreadsheet.getSheetByName(SHEET_NAME); // getvaluesの実行速度が遅いのでシート内容を一括で取得 // A列1行目が[0][0]になることに注意する var data = sheet.getDataRange().getValues(); // チャット送信状態を保持する列のインデックス var stateColumnIndex = 4;// D列でチャット送信状態を保持する var targetColumnIndex = 3;// C列の更新を監視する var targetRowIndexes = []; // チャット通知対象の行リスト // チャット通知対象の行リストを生成する // ヘッダが0行目なので読み飛ばす for (var i = 2; i < data.length; i++) { // チャット未送信状態 かつ B列に何らかの入力がある if ((!data[i][stateColumnIndex]) && (data[i][targetColumnIndex])) { targetRowIndexes.push(i); } } // 通知対象行が0なら離脱 if (targetRowIndexes.length == 0) return; // シートの行ごとにメッセージブロックを生成する var msg= ''; for (var i = 0; i < targetRowIndexes.length; i++) { var row = targetRowIndexes[i];// シート上はi+1行目 var cell = data[row][targetColumnIndex];// i+1行目A列のセルの値 msg += Utilities.formatString('[info]№%d 更新されました\n標題:+ taskNo +\n編集者:%s[/info]', row + 1, cell); sheet.getRange(row + 1, stateColumnIndex + 1).setValue(true); } var message = Utilities.formatString('[%s] \n%s', SHEET_NAME, msg); // ChatWorkへメッセージを送信 postChatwork(message); }

ここに問題に対して試したことを記載してください。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2023/07/24 10:36

「変更箇所以外の標題の通知ができない」とは具体的にどういう状況でしょうか? たとえば「セルC10が変更されたとき、現状セルC10の内容だけは通知できるが、C10だけではなくセルA10の内容もあわせて通知したい(しかしそのやり方がわからない)」という意味でしょうか?
NECOICE

2023/07/24 23:48

コメントありがとうございます! はい!!!おっしゃる通りでございます! よろしくお願いいたします。
guest

回答1

0

ベストアンサー

下記でどうでしょうか。

js

1 var titleColumnIndex = 1;// 追加:標題=A列なので1 2 for (var i = 0; i < targetRowIndexes.length; i++) { 3 var row = targetRowIndexes[i];// シート上はi+1行目 4 var cell = data[row][targetColumnIndex];// i+1行目C列のセルの値 // 追加 5 var taskNo = data[row][titleColumnIndex];// i+1行目A列(標題)のセルの値 6 msg += Utilities.formatString('[info]№%d 更新されました\n標題:%s\n編集者:%s[/info]', row + 1, taskNo, cell); // 修正 7 sheet.getRange(row + 1, stateColumnIndex + 1).setValue(true); 8 }

投稿2023/07/25 11:59

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

NECOICE

2023/07/26 01:28

無事にできました! 一週間以上悩んでいたことなので本当に助かりました ありがとうございました!!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問