在Google脚本中,新添加的表单响应表未显示

时间:2017-01-14 13:50:56

标签: google-apps-script google-sheets

在js中,我正在打开谷歌表,执行一些功能。然后我打开谷歌表单,并将响应目的地设置为该表。这会自动添加新工作表。但是,在脚本中,新工作表未显示。

以下是相关代码:

<div class="row">
    @foreach($address as $add)
        <div class="col-md-6">
            Some data
        </div>
        @if ($loop->iteration % 2 == 0)
            </div>
            <div class="row">
        @endif
    @endforeach
</div>

然后我尝试了一些选项,例如添加睡眠,或者使用新变量重新打开文件。

var userCBsheet = SpreadsheetApp.open(userCBfile);
Logger.log("Sheet Count 1: " +userCBsheet.getNumSheets());
//this shows 8 sheets correctly

var formLL = FormApp.openById(userLLfile.getId());
formLL.setDestination(FormApp.DestinationType.SPREADSHEET,userCBsheet.getId());

Logger.log("Sheet Count 2: " +userCBsheet.getNumSheets());
//Still shows 8

如果我让函数完成,那么运行一个简单的检查,它可以工作:

//same as above, then added
var cbid=userCBsheet.getId(); 
var userCBsheet2 = SpreadsheetApp.openById(cbid);
Logger.log("Sheet Count 3: " +userCBsheet2.getNumSheets());
//still shows 8

所以问题是如何通过表单的setDestination函数将新创建的选项卡添加到工作表后才能访问它?

1 个答案:

答案 0 :(得分:0)

在更改表单目标后添加SpreadsheetApp.flush(),如下所示:

var formLL = FormApp.openById(userLLfile.getId());
   formLL.setDestination(FormApp.DestinationType.SPREADSHEET,userCBsheet.getId());
SpreadsheetApp.flush()
Logger.log("Sheet Count 2: " +userCBsheet.getNumSheets());