Google Sheets OnEDIT機能 -- javascript フィールド と spreadsheet フィールド 関連 問題

Google Sheets onEdit function












0
vote

問題

日本語

毎日使用するスプレッドシートでは、Excelでは、列Fのセルが「クリア」と言われている場合、データの全行を自動的に移動するマクロを持っていました。私はVisual Basicに比較的快適ですが、Google Sheetsに移動する際には、JavaScriptが以前に使用されたことがないことを理解しています。

他の誰かが私のシートで実行する必要があるものに変数を書いて変更したコードをいくつか見つかりましたが、「Source」プロパティをコードの6行目に読み取ることができないことを示しています(そしておそらく線7も)。

あなたがこれを提供できる助けを感謝し、私のことをやることのために「JavaScriptを学ぶ」を入れるでしょう!

<事前> <コード> function onEdit(event) { // assumes source data in sheet named "Action tracker" // target sheet of move to named "Cleared Action Points" // test column with "Cleared" is col 6 or F var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = event.source.getActiveSheet(); var r = event.source.getActiveRange(); if(s.getName() == "Action tracker" && r.getColumn() == 6 && r.getValue() == "Cleared") { var row = r.getRow(); var numColumns = s.getLastColumn(); var targetSheet = ss.getSheetByName("Cleared Action Points"); var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); s.getRange(row, 1, 1, numColumns).moveTo(target); s.deleteRow(row); } }
英語

On a spreadsheet that I use daily, in Excel I had a macro that would automatically move a whole row of data if the cell in column F said "Cleared". I'm relatively comfortable with Visual Basic, however in moving to Google Sheets I understand that Javascript is used which I've never used before.

I found some code that someone else had written and changed the variables to what they need to be to run in my sheet however it's telling the that the "source" property cannot be read in line 6 of the code (and presumably line 7 also).

I'd appreciate any help that you can provide with this and will put "Learn Javascript" on my to do list!

function onEdit(event) { // assumes source data in sheet named "Action tracker" // target sheet of move to named "Cleared Action Points" // test column with "Cleared" is col 6 or F var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = event.source.getActiveSheet(); var r = event.source.getActiveRange();  if(s.getName() == "Action tracker" && r.getColumn() == 6 && r.getValue() == "Cleared") {     var row = r.getRow();     var numColumns = s.getLastColumn();     var targetSheet = ss.getSheetByName("Cleared Action Points");     var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);     s.getRange(row, 1, 1, numColumns).moveTo(target);     s.deleteRow(row);     } } 
</div
     
     
     

回答リスト

0
 
vote
vote
ベストアンサー
 

問題は、「ソース」がわかる限りではない限り定義されていないことです。

も、関数にフィードする変数イベントが必要な前に述べたように。

<事前> <コード> function onEdit() { // assumes source data in sheet named "Action tracker" // target sheet of move to named "Cleared Action Points" // test column with "Cleared" is col 6 or F var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = ss.getActiveSheet(); var r = ss.getActiveRange(); var rows = r.getRow(); var cell = s.getRange(rows, r.getColumn()); if(s.getName() == "Action Tracker" && r.getColumn() == 6 && cell.getValue() == "Cleared") { var numColumns = s.getLastColumn(); var targetSheet = ss.getSheetByName("Cleared Action Points"); var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); s.getRange(rows, 1, 1, numColumns).moveTo(target); s.deleteRow(rows); }

}

また、この機能をどこから実行する必要はありません - onEditはトリガーです。スプレッドシートに何かを編集すると自動的にスクリプトを実行します。

これが役立つことを願っています。

 

The problem is that "source" is not defined as anything as far as I can see.

Also as mentioned before you need the variable event that you feed into the function.

function onEdit() { // assumes source data in sheet named "Action tracker" // target sheet of move to named "Cleared Action Points" // test column with "Cleared" is col 6 or F   var ss = SpreadsheetApp.getActiveSpreadsheet();   var s = ss.getActiveSheet();   var r = ss.getActiveRange();   var rows = r.getRow();   var cell = s.getRange(rows, r.getColumn());  if(s.getName() == "Action Tracker" && r.getColumn() == 6 && cell.getValue() == "Cleared") {   var numColumns = s.getLastColumn();   var targetSheet = ss.getSheetByName("Cleared Action Points");   var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);   s.getRange(rows, 1, 1, numColumns).moveTo(target);   s.deleteRow(rows); } 

}

Also, you don't need to run this function from anywhere - onEdit is a trigger and will automatically run your script if you edit something in your spreadsheet.

Hope this helps.

</div
 
 

関連する質問

1  Perlのスプレッドシート:: ParseExcelはなぜ$ Parser-> Parse( 'test.xls')から返さないのですか?  ( Why doesnt perls spreadsheetparseexcel never return from parser parsetes ) 
スプレッドシートはExcel 97-2003互換性と権限777 です。 <事前> <コード> use strict; use Spreadsheet::ParseExcel; print "Content-type: text/html "; my $...

0  テーブルへの2列のデータを表す  ( Representing two columns of data into a table ) 
私は以下のように2列のデータを持っています。 <事前> <コード> A B 1 John red 2 John yellow 3 John yellow 4 Albert blue 5 Albert orange 6 Chad ...

0  Googleシートのシリーズからの「抽出」間隔  ( Extract intervals from series in google sheets ) 
GoogleシートにIF として定義されているシリーズがある場合 <事前> <コード> [29060, 29062, 29331, 29332, 29333, 29334, 29335, 29336, 29337, 29338, 29339, 29340, ...

0  マクロ/コーディングを使用せずにLibreOffice Calcの上限の空のセルからの値で空のセルを埋める方法  ( How to fill empty cells with values from upper non empty cell in libreoffice cal ) 
空のセルを空でないセルからの値で埋めたい、MS Excelはそれを行うためにCtrl + Dを持っています。しかし、私はさらに私がマルチホップCTRL + Dをしたいのですが。 例えばです A1、A3、A9、A25、A28はある値を有し、列Aの他のすべての...

1  Excelスプレッドシートでクリックイベントをキャプチャします  ( Capturing the click event in an excel spreadsheet ) 
ユーザーがセルをクリックしたときにイベントをExcelでキャプチャする方法このイベントを使用して、ユーザーが列内の複数の異なるセルをクリックする回数をカウントするためのコードをいくつか起動させることができます。 ...

0  セルが変更されたときにユーザーを促します  ( Prompt user when cell is changed ) 
一般的にマクロとプログラミングを作成するのは非常に新しいです。私は38タブのワークシートを持っています。 31タブは月の日数です。これらの31タブのそれぞれについて列nで "MCO"が選択されている警告メッセージを持つユーザーに促すマクロを作成します。それは可...

0  MS ExcelからGoogleスプレッドシートへの合計オフセット  ( Sum offset from ms excel to google spreadsheet ) 
MS2013(XLSX)からExcel文書を作成し、それを超える行を動的に計算して調整したいので、それ以外の行を追加してください。しかし、Googleスプレッドシートでこれをインポートすると、フォーミュラはもう機能しません。これがサンプルと式です。 <事前>...

3  MS Excel VBA - あるExcelファイルから別のExcelファイルにワークシートをインポートする必要があります  ( Ms excel vba i need to import a worksheet from one excel file to another ) 
ワークシートを1つのExcelワークブックからインポートする必要があります(ワークシート名は必ずしも同じではありません)、現在のアクティブブックにインポートします。 これまでのところ私が持っているものです: <事前> <コード> Sub openFile_Cl...

0  複数のタブを介してRengeProtect()を実装する方法 - Googleスプレッドシート  ( How to implement rangeprotect over multiple tabs google spreadsheet ) 
私のテンプレートをコピーして新しいスプレッドシートを作成したときに、スプレッドシートのさまざまなタブで範囲保護を実装するためのスクリプトを実装します。 問題iの存在は、スクリプトが保護実装を経て実行されているときです。 私のコードはデバッグツールに従って問題が...

2  ASP.NETのコントロールのようなスプレッドシート[クローズ]  ( Spreadsheet like control in asp net ) 
この質問はスタックオーバーフローガイドラインを満たしていません。現在答えを受け付けていません。 この質問を改善したいですか? O...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有