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

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

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

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

Google Apps Script

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

ChatWork

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

Q&A

解決済

1回答

1729閲覧

スプレッドシート内容をチャットワークへ送信後、送信日時を自動入力したい

ido

総合スコア3

Google スプレッドシート

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

Google Apps Script

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

ChatWork

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

0グッド

1クリップ

投稿2021/09/06 08:51

前提・実現したいこと

こちらのサイトなどを参考に、初めてGASを作っています。

実現したいこと:
以下スプレッドシート表に入力したC列の内容を、チャットワークへ送る。
・I列が空白の分はすべて送信する。
・送信が終わったら、I列に送信日時を入力する。
イメージ説明

作ったコード

function chatWorkMessage() { const SENDDATE = new Date(); var client = ChatWorkClient.factory({token: 'トークンID'}); var SHEET = SpreadsheetApp.getActiveSpreadsheet(); var TEXT_RANGE = SHEET.getSheetByName('スケジュール').getDataRange(); var TEXT = TEXT_RANGE.getValues(); // シートを最初から最後まで見る for (const row of TEXT) // 「(I2~)」が空欄だったら if (row[8] === '') { // 送信する行のテキスト(C2~)をシートから取得 var TEXT = row[2]; // 送信する行からbodyを生成する var BODY = '[info]'; BODY += TEXT; BODY += '[/info]'; client.sendMessage({room_id:'ルームID', body: BODY}); row[8].setValue(SENDDATE); } }

「チャットワークへ送り終わった行のI列に送信日時を入力」のつもりで
row[8].setValue(SENDDATE);
と入力していますが、以下エラーメッセージが発生します。

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

エラーメッセージ TypeError: row[8].setValue is not a function

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

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

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

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

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

guest

回答1

0

ベストアンサー

row[8]は文字なので、setValueとしたらエラーがでます。
setValueがあるのは、rangeなので**getRange("I2").setValue("日時")**とする必要があると思います。以下は参考コードになります。

GAS

1function chatWorkMessage() { 2 const SENDDATE = new Date(); 3 var client = ChatWorkClient.factory({ token: "トークンID" }); 4 5 var SHEET = SpreadsheetApp.getActiveSpreadsheet(); 6 var TEXT_RANGE = SHEET.getSheetByName("スケジュール").getDataRange(); 7 var TEXT = TEXT_RANGE.getValues(); 8 9 // シートを最初から最後まで見る 10 // 「(I2~)」が空欄だったら 11 var i = 0; 12 for (const row of TEXT) { 13 i++; 14 if (row[8] === "") { 15 // 送信する行のテキスト(C2~)をシートから取得 16 var TEXT = row[2]; 17 18 // 送信する行からbodyを生成する 19 var BODY = "[info]"; 20 BODY += TEXT; 21 BODY += "[/info]"; 22 23 client.sendMessage({ room_id: "ルームID", body: BODY }); 24 25 //row[8].setValue(SENDDATE); 26 SHEET.getSheetByName("スケジュール").getRange(`I${i}`).setValue(SENDDATE); 27 } 28 } 29} 30

投稿2021/09/07 07:49

fake_shibe

総合スコア806

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

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

ido

2021/09/07 09:13

参考コードで動作確認できました! 24時間以内に解決するとは思っていなかったので、非常に助かりました。 なぜエラーとなったのか教えてくださり、勉強になりました。 非プログラマーですが、これからも習得を頑張っていこうと思えました! 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問