18

数式を介してExcelで実行できるのと同様に、Googleスプレッドシートで条件付き書式を使用する方法を理解しようとしています。

セルO2の値が「X」の場合にセルA2を緑に変更したいのですが、これは両方の列で最後まで行われます。これにはスクリプトが必要になることはわかっています。

似たようなリンクに出くわしましたが、ニーズに合わせて調整する方法がわかりません。これはできることですか?

リンク: https ://webapps.stackexchange.com/questions/16745/google-spreadsheets-conditional-formatting

4

4 に答える 4

21

説明したことを実行するために使用できるスクリプトは次のとおりです。

function formatting() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  var columnO = sheet.getRange(2, 15, sheet.getLastRow()-1, 1);
  var oValues = columnO.getValues();

  for (var i = 0; i < oValues.length; i++) {
    if (oValues[i][0] == 'X') {
      sheet.getRange(i + 2, 1, 1, 1).setBackgroundColor('green');
    }
  }
}
于 2012-05-21T18:28:58.510 に答える
12

新しいGoogleスプレッドシートでは、これにスクリプトは必要ありません。

代わりに、条件付き書式でオプション「カスタム数式」を選択し、=O2="X"-のような値、またはブール値のtrue/false値を返す式を入力します。

私の知る限り、これらのカスタムスクリプトにリストされている参照は少し奇妙で、次のように適用されます...

選択した範囲内のセルの場合は、「強調表示されているセル」に変更されます。

選択した範囲外のセルの場合は、「その位置に、現在のセルから選択した範囲の左上までのオフセットと同じオフセットを加えたもの」に変更されます。

つまり、範囲がA1:B2の場合、上記は次のように各セルに個別の書式を設定するのと同じになります。

A1 =O2="X"
A2 =O3="X"
B1 =P2="X"
B2 =P3="X"

-のような固定参照を指定することもできます=$O$2="X"。これにより、選択した範囲内のすべてのセルの特定のセルO2がチェックされます。

于 2014-05-27T00:36:57.677 に答える
10

(2017年2月)別の回答で述べたように、Googleスプレッドシートでは、デスクトップ/ラップトップ、Android、iOSデバイスのいずれであっても、ユーザーがユーザーインターフェースから直接条件付き書式を追加できるようになりました。

同様に、Google Sheets API v4(およびそれ以降)を使用すると、開発者は条件付き書式ルールをCRUDするアプリケーションを作成できるようになります。詳細とリファレンスドキュメントについては、ガイドサンプルのページをご覧ください(を検索してください)。このガイドでは、このPythonスニペットを取り上げています(ファイルIDがAPIサービスエンドポイントであると想定しています)。{add,update,delete}ConditionalFormatRuleSHEET_IDSHEETS

myRange = {
    'sheetId': 0,
    'startRowIndex': 1,
    'endRowIndex': 11,
    'startColumnIndex': 0,
    'endColumnIndex': 4,
}

reqs = [
    {'addConditionalFormatRule': {
        'index': 0,
        'rule': {
            'ranges': [ myRange ],
            'booleanRule': {
                'format': {'textFormat': {'foregroundColor': {'red': 0.8}}}
                'condition': {
                    'type': 'CUSTOM_FORMULA',
                    'values':
                        [{'userEnteredValue': '=GT($D2,median($D$2:$D$11))'}]
                },
            },
        },
    }},
    {'addConditionalFormatRule': {
        'index': 0,
        'rule': {
            'ranges': [ myRange ],
            'booleanRule': {
                'format': {
                    'backgroundColor': {'red': 1, 'green': 0.4, 'blue': 0.4}
                },
                'condition': {
                    'type': 'CUSTOM_FORMULA',
                    'values':
                        [{'userEnteredValue': '=LT($D2,median($D$2:$D$11))'}]
                },
            },
        },
    }},
]

SHEETS.spreadsheets().batchUpdate(spreadsheetId=SHEET_ID,
        body={'requests': reqs}).execute()

Pythonに加えて、Google APIはさまざまな言語をサポートしているため、オプションがあります。とにかく、そのコードサンプルはシートをフォーマットし(下の画像を参照)、年齢の中央値より若い人は明るい赤で強調表示され、中央値を超える人はデータが赤いフォントで色付けされます。

条件付き書式の例


公共サービスの案内

最新のSheetsAPIは、以前のリリースでは利用できなかった機能を提供します。つまり、開発者は、ユーザーインターフェイスを使用しているかのように、シートにプログラムでアクセスできます(条件付き書式[!]、固定行、セル書式、行/列のサイズ変更、ピボットテーブルの追加、チャートの作成など)。

APIを初めて使用し、APIの使用例をもう少し長く、より一般的に見たい場合は、さまざまなビデオと関連するブログ投稿を作成しました。

お分かりのように、Sheets APIは主に上記のドキュメント指向の機能を対象としていますが、アップロードとダウンロード、インポートとエクスポート(アップロードとダウンロードと同じですが、さまざまな形式との変換)などのファイルレベルのアクセスを実行します。代わりにGoogleDriveAPIを使用してください。ドライブAPIの使用例:

  • GoogleスプレッドシートをCSVとしてエクスポートする(ブログ投稿のみ)
  • 「貧乏人のプレーンテキストからPDFへ」コンバーター(ブログ投稿のみ)(*)

(*)-TL; DR:プレーンテキストファイルをドライブにアップロードし、Googleドキュメント形式にインポート/変換してから、そのドキュメントをPDFとしてエクスポートします。上記の投稿では、DriveAPIv2を使用しています。このフォローアップ投稿では、Drive API v3への移行について説明しています。これは、両方の「貧乏人のコンバーター」の投稿を組み合わせたビデオです。

于 2017-03-07T01:39:05.910 に答える
6

最新のSheetAPIを使用すると、プログラムで条件付き書式ルールをシートに追加して、強調表示を行うことができます。

次のように、列Oが「X」である列Aの背景色を緑に設定するカスタム数式ルールを追加できます。

function applyConditionalFormatting() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');

  var numRows = sheet.getLastRow();
  var rangeToHighlight = sheet.getRange("A2:A" + numRows);
  var rule = SpreadsheetApp.newConditionalFormatRule()
      .whenFormulaSatisfied('=INDIRECT("R[0]C[14]", FALSE)="X"')
      .setBackground("green")
      .setRanges([rangeToHighlight])
      .build();

  var rules = sheet.getConditionalFormatRules();
  rules.push(rule);
  sheet.setConditionalFormatRules(rules);
}

条件付き書式が適用される範囲は、行2からシートの最後の行までのA列です。

カスタム式は次のとおりです。

=INDIRECT("R[0]C[14]", FALSE)="X"

つまり、選択した範囲列の右側に14列移動し、その値が「X」であるかどうかを確認します。

列Oは、列Aの右側の14列です。

于 2019-08-05T14:08:24.210 に答える