【问题标题】:Transferring value from one spreadsheet to another将价值从一个电子表格转移到另一个电子表格
【发布时间】:2013-07-03 00:33:32
【问题描述】:

我正在尝试创建一个电子表格,允许用户输入多达 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)
}

【问题讨论】:

  • 祝你好运。答案在文档中,即 Google-Apps-Script & JavaScript 文档。 ...这更像是你付钱给程序员来解决的那种事情。

标签: google-apps-script google-sheets


【解决方案1】:

您可以将脚本创建为网络应用程序,它可以访问 Google 文档和电子表格。如果您这样做,您可以设置脚本的权限,以便运行它的用户拥有您的权限而不是他们自己的权限。如果您可以访问主电子表格,那么您的脚本将可以访问,但您的用户不会。

详情请见Google Developers site。向下查看权限和 WebApps

页面

【讨论】:

  • 我已经添加了我的代码,请你帮我指导如何创建 webapp。我对谷歌脚本一点经验都没有。谢谢
  • 我不打算为你重写你的脚本。我给你的链接指向谷歌网站上的相关页面,应该让你开始。如果您做不到,请考虑雇用某人。
  • 我只是想举例说明我的代码是什么,并且需要指导我是否能够修改我编写的代码以用作 webapp 进行数据传输,或者它将完全不同.您提供的链接指向页面,该页面解释了发布网络应用程序的参数,但并未真正解释网络应用程序如何工作以及如何开始编写一个。不过谢谢你的回答..
【解决方案2】:

保护一两张纸? - 您可以保护工作表,因此有些工作表可以编辑,而另一些则不能。您可以控制谁可以编辑哪些工作表。 ...也可能使用数据库公式来提取数据。比写代码工作量少。因为有所有编辑的历史记录,您可以使用它查看对工作表所做的所有更改。

【讨论】:

  • 我将值从多张表插入到一张表中,并且不能让不同的用户看到其他人输入的信息。它的所有机密数据...
猜你喜欢
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 2016-10-06
  • 1970-01-01
  • 2020-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多