6

Google Apps スクリプトとスプレッドシートを使用して、簡単なことをしようとしましたが、問題がわかりません。空白の列とテキストのある列を持つシートがあります。列は互いに隣り合っていません。1 つの列の各セルでテキストを検索しようとしています。テキストが見つかった場合は、空の列のセルの値を「はい」に設定します。

例(申し訳ありませんがコードはありません - 私は何時間もそれを使ってきましたが、私が持っているものは非常に複雑なので、例を提供するのが最善です):

Column A with text  Empty Column F
abcd efg hij
klmn opq rstu  
vwxzy                  Yes

列 A で「xyz」を検索し、列 F で「はい」を返す最も簡単なコードは何ですか?

オンラインでさまざまなコード例を見て試してみましたが、どれも機能しません。これで何か助けていただければ幸いです!!

私の使用のために編集(できれば最終)(ヘッダー名に基づいて列番号を取得するバックエンドユーティリティがいくつかあります。そのコードはこれに含まれていません、fyi):

var sskey = SpreadsheetApp.openById('**********************')

function otherfunction(){
  addCustomValue('POCs', 'Groups', 'Champion', 'Champion', 'Yes');
}

function addCustomValue(sheetNamestr, searchColnamestr, writeColnamestr, searchKeystr, writeValstr) {
  var sheet = sskey.getSheetByName(sheetNamestr);
  var searchColnum = MyUtilities.getColIndexByName(sheet, 1, searchColnamestr);
  var writeColnum = MyUtilities.getColIndexByName(sheet, 1, writeColnamestr);
  var data = sheet.getDataRange().getValues();
  for (n=0; n<data.length; ++n) {
    if (data[n][searchColnum-1].toString().match(searchKeystr)==searchKeystr){ data[n][writeColnum-1] = writeValstr};
    }
  sheet.getRange(1,1,data.length,data[0].length).setValues(data);
}

ありがとうセルジュ!これで、任意の列と条件に基づいて、スプレッドシートでこれを実行できます!

4

2 に答える 2

11

これは、必要なことを実行する単純なスクリプトです。(シートに数式またはカスタム関数が含まれている場合は、それを考慮して変更する必要があります)

function test(){
  var sh = SpreadsheetApp.getActiveSheet();
  var data = sh.getDataRange().getValues(); // read all data in the sheet
  for(n=0;n<data.length;++n){ // iterate row by row and examine data in column A
    if(data[n][0].toString().match('xyz')=='xyz'){
      // if column A contains 'xyz' then set value in index [5] (is column F)
      data[n][5] = 'YES'
    };
  }
  Logger.log(data)
  sh.getRange(1,1,data.length,data[0].length).setValues(data); // write back to the sheet
}
于 2012-11-11T09:50:19.303 に答える
3
function myFunction() {
  //Variable to keep track of the sheet
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  //Start at row 1, end at the last row of the spreadsheet
  for(var i=1;i<sheet.getLastRow();i++){
    var value = sheet.getRange(i, 1).getValue();
    //Compare the value of the cell to 'xyz', if it is then set column 4 for that row to "Yes"
    if(value == 'xyz'){
      sheet.setActiveRange(sheet.getRange(i, 4)).setValue('Yes');
    }
  }
}
于 2012-11-11T03:44:19.053 に答える