0

ユーザーが最大 100 行の情報を入力できるスプレッドシートを作成しようとしています。送信ボタンをクリックすると、そのデータがマスター データ スプレッドシートに入力されます。

動作してデータをマスター データ シートに転送するスクリプトを作成しました。openbyID を使用してターゲット シートを開きます。

問題は、マスター データ シートにアクセスしないと、ユーザーがシートを開いてデータを追加できないことです。そのスプレッドシートにアクセスせずにスプレッドシートにデータを追加する方法があれば、私のニーズには理想的です。

それが可能かどうか教えてください。

繰り返しになりますが、現在 OpenByID を使用してスプレッドシートを開いていますが、ユーザーがスプレッドシートに直接アクセスせずにマスター スプレッドシートにデータを追加できるようにしたいと考えています。

助けていただければ幸いです。

ご不明な点がございましたら、お知らせください。

コハルさんありがとう

私のコード:

Sorry I am not sure how to write my script as web app.

私のスクリプトの下を参照してください..ウェブアプリとして機能するように変更する方法を説明してもらえますか?

ありがとうございました

function CopyDataToMaster() {
  var inf = SpreadsheetApp.getActiveSpreadsheet();
  var inf_sheet = inf.getSheetByName("Info");
  var tt_key = inf_sheet.getRange("A4").getValue();
  var SiteName = inf_sheet.getRange("A2").getValue();
  var d = new Date();

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var tt = SpreadsheetApp.openById(tt_key);

  var ss_sheet = ss.getSheetByName("Report");
  var tt_sheet = tt.getSheetByName("Master-Data-Sheet");
  var FilledBy = ss_sheet.getRange("C5").getValue();

  var tt_last_row = tt_sheet.getLastRow();
  var tt_work_row = tt_last_row+1;

  for (var i=1; i<=100 ; i++) {
    var dDr = ss_sheet.getRange(i+10, 2);
    var dD = dDr.getValue();
    if (dD!="") {
      var nMr = ss_sheet.getRange(i+10, 3);
      var nM = nMr.getValue();      
      var aMr = ss_sheet.getRange(i+10, 4);
      var aM = aMr.getValue();      
      var bWr = ss_sheet.getRange(i+10, 5);
      var bW = bWr.getValue();      
      var bSr = ss_sheet.getRange(i+10, 6);
      var bS = bSr.getValue();      
      var tDr = ss_sheet.getRange(i+10, 7);
      var tD = tDr.getValue();      
      var mOr = ss_sheet.getRange(i+10, 8);
      var mO = mOr.getValue();      
      var bOr = ss_sheet.getRange(i+10, 9);
      var bO = bOr.getValue();      
      var dCr = ss_sheet.getRange(i+10, 10);
      var dC = dCr.getValue();

      tt_sheet.insertRowAfter(tt_work_row-1);

      tt_sheet.getRange(tt_work_row,1).setValue(Utilities.formatDate(new Date(),+5.5, "MM/dd/yyyy HH:mm:ss"));
      tt_sheet.getRange(tt_work_row,2).setValue(SiteName);
      tt_sheet.getRange(tt_work_row,3).setValue(FilledBy);
      tt_sheet.getRange(tt_work_row,4).setValue(dD);
      tt_sheet.getRange(tt_work_row,5).setValue(nM);
      tt_sheet.getRange(tt_work_row,6).setValue(aM);
      tt_sheet.getRange(tt_work_row,7).setValue(bW);
      tt_sheet.getRange(tt_work_row,8).setValue(bS);
      tt_sheet.getRange(tt_work_row,9).setValue(tD);
      tt_sheet.getRange(tt_work_row,10).setValue(mO);
      tt_sheet.getRange(tt_work_row,11).setValue(bO);
      tt_sheet.getRange(tt_work_row,12).setValue(dC);

      dDr.clearContent();
      nMr.clearContent();
      aMr.clearContent();
      bWr.clearContent();
      bSr.clearContent();
      tDr.clearContent();
      mOr.clearContent();
      bOr.clearContent();
      dCr.clearContent();

      tt_work_row = tt_work_row+1;
    }
  }
  Browser.msgBox("Thank you", "Information has been submitted",Browser.Buttons.OK)
}
4

2 に答える 2