複数人でスプレッドシート利用して業務管理を行おうとしています。
初心者のため色々なサイトやテンプレをコピペしながらスクリプトを作成しましたが、
エラーがでてしまうので、スクリプト記述をご教示いただきたいです。
管理表はスプレッドシートの列にいくつか項目を設けており、
A列:進捗ステータス、B列:担当者に対して処理を行いたいです。
①選択しているセルのA列が「完了」でない、かつ、B列に必ず担当者が記載されている
→スクリプトを実行すると、A列に「完了」と入力し、担当者欄を青にする
→「完了しました」のメッセージボックスを出す
②A列が「完了」になっている、もしくは選択しているセルがグレー
→メッセージボックス「完了しています」
③それ以外
→「処理できません」
①~③の処理をスクリプトで処理しようとコピペ等で作成しました。
追加メニューの自動処理から実行する形になります。
-----------------------------------------------
function finished(){
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveRange();
var contents = sheet.getRange(i,1).getValues()
if(i = 1; contents[i][0] == '' && contents[i][2] != ''){ //処理①
sheet.getRange(i, 1).setValue('完了');
sheet.getRange(i, 2).setBackgroundRGB(0, 0, 255);
Browser.msgBox('完了しました');
}else if(contents[i][0] == '完了){ //処理②
Browser.msgBox('完了しています');
}else{ //処理③
Browser.msgBox('処理できません。');
}
}
//シートを開いたら実行
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
//カスタムメニュー「自動処理」作成
var subMenu = [
{name: '完了処理', functionName: 'finished'},
];
sheet.addMenu('自動処理', subMenu);
}
-----------------------------------------------
理解もできていないままつぎはぎで記述しているのでエラーばかりです。。。
またグレーRGB(242, 242, 242), RGB(217, 217, 217), RGB(192, 192, 192)を取得したいのですが、取得方法がわからず記載できてません。
また複数人で同時に処理を行う場合もありますので、重複しないようにする方法はありますでしょうか?
ご教示いただけますと幸いです。よろしくお願いいたします。
No.1
- 回答日時:
どうぞ。
function finished(){
var blue = '#0000ff';
var glay1 = '#f2f2f2';
var glay2 = '#d9d9d9';
var glay3 = '#c0c0c0';
var aColumn = 1;
var bColumn = 2;
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveRange();
var finishCell = sheet.getRange(range.getRowIndex(), aColumn);
var personCell = sheet.getRange(range.getRowIndex(), bColumn);
var activeColor = range.getBackground();
if(finishCell.getValue() == '' && personCell.getValue() != ''){ //処理①
finishCell.setValue('完了');
personCell.setBackground(blue);
Browser.msgBox('完了しました');
}else if(finishCell.getValue() == '完了' || activeColor == glay1 || activeColor == glay2 || activeColor == glay3){ //処理②
Browser.msgBox('完了しています');
}else{ //処理③
Browser.msgBox('処理できません。');
}
}
//シートを開いたら実行
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
//カスタムメニュー「自動処理」作成
var subMenu = [
{name: '完了処理', functionName: 'finished'},
];
sheet.addMenu('自動処理', subMenu);
}
>またグレーRGB(242, 242, 242), RGB(217, 217, 217), RGB(192, 192, 192)を取得したいのですが、取得方法がわからず記載できてません。
取得できないようなので16進数のまま使うのが良いかと思います。
どうしても使いたかったら自前で変換しましょう。
var glay1 = '#f2f2f2'; ・・・=(242, 242, 242)
var glay2 = '#d9d9d9'; ・・・=(217, 217, 217)
var glay3 = '#c0c0c0'; ・・・=(192, 192, 192)
>また複数人で同時に処理を行う場合もありますので、重複しないようにする方法はありますでしょうか?
こちらは存じません。
通常の編集ではログインしている人と編集しているセルが見えるはずですが・・・
No.2ベストアンサー
- 回答日時:
補足に回答します。
A列が空、B列が空ではない場合、処理①に入ってしまうため、処理②になりません。
対応するには以下のようにしてください
・処理①と処理②の順序を変える
または
・処理①の条件にグレー以外という条件を加える
→if(finishCell.getValue() == '' && personCell.getValue() != '' && !(finishCell.getValue() == '完了' || activeColor == glay1 || activeColor == glay2 || activeColor == glay3))
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- Excel(エクセル) エクセルVBA マクロ処理中のポップアップメッセージについて 1 2023/08/04 21:34
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ 5 2022/11/06 21:34
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Ajaxの実行速度と読み方について
-
ftp 同時複数接続の負荷テスト...
-
画面系イベントの優先度を上げたい
-
ブラウザを閉じた後のサーバ側...
-
ラベルの表示までが異常に遅い...
-
C#でバックグラウンド処理から...
-
tryの終了
-
Javaでのデバッグコード削除
-
Javaプログラムからポップアッ...
-
java(swing)で、登録ボタンを押...
-
エクセルVBAで、条件に一致する...
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
java eclipse 型に解決できません
-
Java初級 引数に適用できません
-
多人数のじゃんけんプログラム
-
COMコンポーネントって何?
-
C#において、同じインスタンス...
-
変数名の付け方
-
「タイプ初期化子が例外をスロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
tryの終了
-
数値の定数を付ける時
-
Javaでのデバッグコード削除
-
C#で別スレッドの終了を知りたい
-
[Java] while(true)の意味
-
Javaプログラムからポップアッ...
-
Tomcatのスレッドを破棄する方法
-
ラジオボタンの選択判定
-
JavaScriptからJAVAクラスを呼...
-
素数判定を再帰処理で
-
PHPでDB処理中にプログレスバー...
-
Javaアプリケーション実行の返...
-
WPF C#でF10のイベント取得方法...
-
doGetとdoPostの違い
-
switch文の中に、throws new Ex...
-
Tomcat高負荷時の設定について
-
ラベルの表示までが異常に遅い...
-
ExcelVBA で文字列の特定の文字...
-
JDBCでテーブルUPDATE後の再検...
-
SwingUtilities.invokeLater(ne...
おすすめ情報
ご回答いただいありがとうございます。
大変助かりました。
処理②ですが、スクリプトを実行したところセルがグレーの場合に処理①が実行されてしまいました。
こちらの原因がわからず…
セルの色が指定のグレーと違っている以外に原因は考えられますでしょうか?
度々のご質問となり申し訳ございませんが、ご教示いただけますと幸いです。