使用Google Apps脚本在客户端打开Goog​​le表格

时间:2017-12-14 13:35:28

标签: google-apps-script google-docs google-apps

从现有的GoogleSheet我尝试创建一个图像按钮并附加一个小脚本,该脚本将使用目标Googlesheet的Id打开另一个GoogleSheet。我已经完成了图像按钮并知道如何将函数脚本附加到它。

我尝试了以下内容:



function Open2017File() {
  var ss = SpreadsheetApp.OpenById("1mTz8YaH_lu6R3icbSCpgx0Oy-AB4a98thDPP0m1xNhU");
  Logger.log(ss.getName());
}




然而,在进一步阅读后,我发现这只会打开服务器端脚本文件......

有人可以通过告诉我在客户端打开Goog​​leSheet的等效命令来帮助我。 ?

提前致谢

3 个答案:

答案 0 :(得分:1)

您可以使用内置的HtmlService和scriptlet来实现此目的。转到'文件' - '新' - ' Html文件'并为您的项目添加HTML页面。我打电话给我的边栏'。 '<?!=?>'符号用于输出通过' .gs'传递给html的变量。码。感叹号'!'表示这些符号之间的任何内容都将直接打印到页面上。

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <a href="<?!= spreadsheet.url ?>"> Open spreadsheet <?!= spreadsheet.name ?> </a>
  </body>
</html>

下面的代码将自定义菜单添加到电子表格中 - 点击“显示侧栏”&#39;菜单选项执行&#39; showSidebar()&#39;功能。在这个函数中,你应该首先获得侧边栏的HtmlTemplate类的实例。请注意,此时它只是一个JS对象,我们可以为其定义自定义属性。这是小脚本发挥作用的地方。

下一步是通过调用&#39; getSpreadsheet(id)&#39;来获取第二张表的网址和文件名。函数和传递变量到HtmlTemplate。

最后,在模板上调用evaluate()方法会将模板转换为HtmlOutput对象,准备好由showSidebar()方法使用。我们传递给模板的属性将打印到生成的html:

var ui = SpreadsheetApp.getUi();
var spreadsheetId = YOUR_ID_HERE;

function onOpen() {

ui.createMenu('User options').addItem('Show sidebar', 'showSidebar').addToUi();

}

function showSidebar() {

 var template = HtmlService.createTemplateFromFile('sidebar');
 var spreadsheet = getSpreadsheet(spreadsheetId);

  template.spreadsheet = {      //passing data to the template
    url: spreadsheet.getUrl(), 
    name: spreadsheet.getName()
  };




   ui.showSidebar(template.evaluate()); //evaluate runs the scriptlets 
                                       //and creates the fully-formed DOM tree

}

function getSpreadsheet(id) {


  return SpreadsheetApp.openById(id);


}

当然,您可以通过分配&#39; showSidebar&#39;来创建快捷方式。功能到电子表格内的按钮,便于访问。

答案 1 :(得分:1)

您可以使用此代码打开新工作表:

public List<GameObject> spawning=new List<GameObject>();
public Vector3[] positions = new Vector3[5];

public GameObject barrier;
public GameObject boundary;


void Start()
{
StartCoroutine (SpawnBarrier());
}

void Update()
{
if(true)
{
    foreach (GameObject move in spawning) 
        move.transform.Translate (0f, 0f, -0.1f);
}

}


IEnumerator SpawnBarrier(){

yield return new WaitForSeconds (3f);

while (true) {


    for(int i=0;i<=4;i++)
    {

        spawning.Add (Instantiate (barrier, positions [i],   Quaternion.identity)as GameObject);



    }
    yield return new WaitForSeconds (3f);

}
}

我从这篇文章得到了这个:https://www.youtube.com/watch?v=2y7Y5hwmPc4

答案 2 :(得分:0)

因为无法切换到另一个工作表(标签),我找到了一个工作区。

只需隐藏一张或多张工作表,直到只有您想要的工作表。

然后用未隐藏的床单回去。